10

Flaskを使用してWebサイトを作成しましたが、組み込みの開発サーバーで問題なく動作させることができます。また、mod_wgsiの下で本番サーバーで実行することもできました。ただし、static / CGI / PHP-5.2アプリケーションから静的メディアをホストしているため、HTMLファイルのすべてのURLを手動で変更しないと、Flaskに「表示」させることができません。

問題は、基本的なFlaskセットアップで、静的ファイルがフラスコアプリケーション内にあることを想定していることのようです。詳細はこちらをご覧ください。基本的に、次の1つのライナーの「静的」部分のURLを変更する必要があると思います。

<link rel="stylesheet" href="{{url_for('static', filename='css/print.css')}}" type="text/css" media="print"/> 

これはinit.pyの手順で変更できるようですが static_path次のように定義しても機能しないようです。

app = Flask(__name__, static_path = '/web_media')

明確にするために、URLを次のように手動で定義すると、次のようになります。

<link rel="stylesheet" href="/web_media/css/print.css" type="text/css" media="print"/>

すべてが正常に動作します。どんな助けでも大歓迎です。

4

3 に答える 3

9

代わりにオーバーライドstatic_folderします。

app = Flask(__name__, static_folder = '/web_media')
于 2013-05-25T13:51:23.247 に答える
4

これが本番環境のセットアップである場合、Flaskは静的コンテンツを提供してはなりません。Webサーバー(nginx、apache、チェロキーなど)は、Pythonプロセスよりもこれらのタイプの操作をより効率的に処理できるため、これを処理する必要があります。(mod_wsgiリファレンスに基づく)そのサウンドから、apacheを使用しているので、これは、apacheを使用してstatic / CGI/PHP-5.2から静的コンテンツを提供するように構成ファイルを変更する方法です。

「web_media」がやや架空の/var/www/static/CGI/PHP-5.2ディレクトリの下にあり、css / js/etcが含まれていると仮定します。資産。構成ファイルで、このアプリを構成する領域内に、の行に沿って何かを追加します。

Alias /web_media/ /var/www/static/CGI/PHP-5.2/web_media/

<Directory /var/www/static/CGI/PHP-5.2/web_media>
  Order deny,allow
  Allow from all
</Directory>

apacheを使用/構成してからしばらく経ちましたので、上記が初めて完全に機能するという保証はありません。ただし、重要な点は、Webサーバーを使用して静的メディアを処理することです。

于 2011-05-11T16:43:13.980 に答える
2

本番環境では、httpサーバー(nginx / apacheなど)を介して静的ファイルを提供する必要があります。上記のPhilipSouthamの回答を参照してください。

それでも、werkzeugサーバー(開発/テストなど)を使用する場合があります。その場合、2つのキーワード引数を確認する必要があります。

  • static_folder:ファイルシステム上の物理的な場所。プロジェクトのルートディレクトリからの相対パスよりも相対パスの場合。
  • static_url_path:これは静的コンテンツのURLルックアップパスです。

たとえば、静的ファイルのルートとして、に静的ファイルがあり/path/to/static/files/myfile.jpg、を/path/to/static/files介してアクセスしたい場合ですhttp://example.com/mystatic/myfile.jpg。私は次のことをします:

from flask import Flask

app_name = __name__
app = Flask(app_name, static_folder='/path/to/static/files', static_url_path='/mystatic')

フラスコバージョン0.7以降(現在は0.11.1)を使用していると仮定します

于 2016-10-26T01:30:20.730 に答える