2012-02-06 4 views
1

Pinax 0.9a2を使い始めました。基本設定を行い、 "accounts"プロジェクトを展開しました。私は、インストールされたアプリケーションでは "pinax_theme_bootstrap"があることを確認しました。メインページが正しく表示され、基本的なアプリケーションテーマのCSSが表示されます。私は、さまざまなものの間でページのソースを、閲覧している場合、私は、ポイントは、このラインはどこから来るのか、私はどこにも見つけることができないということであるCSSpinaxはアカウントの基本プロジェクトでcssファイルにアクセスする方法をどのように学習しますか?

http://localhost:8000/site_media/static/css/bootstrap.min.css

のためにこれを持って、またそれが実際にどのように役立っています。私はそれがおそらくpinax_theme_bootstrapアプリケーションによって生成されることを理解していますが、私は理解していません:上記の行を解決し、ファイルを配信するurls.pyがない場合、このアプリケーションはどのように動作するはずですか?

ファイルは、それがpinaxは、そのCSSを見つけることができます静的宣言

STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static") 

# URL that handles the static files like app media. 
# Example: "http://media.lawrence.com" 
STATIC_URL = "/site_media/static/" 

# Additional directories which hold static files 
STATICFILES_DIRS = [ 
    os.path.join(PROJECT_ROOT, "static"), 
] 

STATICFILES_FINDERS = [ 
    "staticfiles.finders.FileSystemFinder", 
    "staticfiles.finders.AppDirectoriesFinder", 
    "staticfiles.finders.LegacyAppDirectoriesFinder", 
    "compressor.finders.CompressorFinder", 
] 

どこにも指定されていない

に来るとき、これはsettings.pyで存在し、ここで

MacQuela:~/Work/Projects/test/test/lib/python2.7/site-packages/pinax_theme_bootstrap/static/css $ ls 
bootstrap.min.css extra.css 

フルパスです。

+0

なぜそのアプリ用にurls.pyが必要ですか?そのsettings.pyのメインのSTATIC_URL/STATIC_ROOTオプションを参照しています。そのファイルは静的な場所に置かれます。 – jdi

+0

@jdi:それがポイントです。どのようにそれらを見つけるのですか?それらのファイルはSTATIC_ROOTにありません。それらはlib/python2.6/site-packages/pinax_theme_bootstrap/ –

+0

にあるpinax_theme_bootstrapに隠されています。また、私はそれを取得しません。あなたがurls.pyを持っていない場合、あなたはどのようにアプリを使うべきですか?私はそのメカニズムを理解していない。このチュートリアルでは、ビューにアクセスするために使用するurls.pyがあるアプリケーションのみを表示します。そのスキーマがないアプリは決して提示されません。 –

答えて

2

私のコメントはあなたの質問の下で長くなってしまったので、答えにスイングしようと決めました。あなたはtheme_base.htmlテンプレートに見ることができるよう

bootstrap.cssは、pinax_theme_bootstrapアプリに含まれています:あなたのsettings.pyのオプションから解決されジャンゴ静的な場所を参照するhttps://github.com/pinax/pinax-theme-bootstrap/blob/master/pinax_theme_bootstrap/templates/theme_base.html

その。あなたが実際に少し修正された場所でこのファイルのミニバージョンを見ているという事実は、私にあなたのためのcss/jsの縮小を実行する別のdjango静的な*アプリケーションがあると信じるようになります。最も可能性が高いのは、compressorアプリです。

更新

あなたはDjangoが静的ファイルを提供していますどのように実際に混乱した部分:https://docs.djangoproject.com/en/dev/howto/static-files/

ここには黒魔術はありません。非常に簡単です。プロジェクト内のすべてのアプリには、そのアプリの静的メディアを含む独自の静的/ディレクトリを含めることができます。 settings.pyと上記のリンクには、STATICオプションと、finderのようなものがあります。これらは、各アプリの下に静的メディアを配置します。また、アプリは絶対URL全体を知る必要もありません。代わりに、テンプレート内の{{STATIC}}を使用してルートの場所を取得できます。

これで、 'runserver'を使用してdevサーバーを実行すると、すべての静的メディアが解決されます。これがブートストラップのCSSが見つかった理由です。 itaはtheme_base.htmlで静的なURLとして参照されています。

生産準備が整ったら、明らかにdjango dev serverを使用しなくなります。 './manage.py collectstatic'のようなコマンドを実行すると、すべての静的メディアが1つの場所に集められ、選択したWebサーバーを介してサーバーに送信されます。私はこれがあなたのためにそれをクリアすることを願っています。 pinaxはdjangoなので、これについてdjangoのドキュメントを見直すことをお勧めします。

+0

更新された質問 –

1
  1. Pinax use django-staticfiles静的ファイルを提供します。settings.pySTATIC_ROOT,STATICFILES_DIRSSTATICFILES_FINDERSという変数があります。

  2. Pinaxアカウントベースプロジェクトのurl.pyでは、次のような行が見つかります:url(r"", include("staticfiles.urls"))、静的ファイルアクセスを定義しています。

  3. は、デバッグモードでDjangoのデフォルトrunserverコマンドを上書きdjango-statifiles、より良いビューを取得し、それはDjangoはStatifFilesHandlerWSGIHandlerをdefualt書き換えます。したがって、python manage.py runserverを実行してサイトにアクセスすると、その要求が静的なファイル要求かどうかが判断されます(trueの場合、staticfiles.finders.FileSystemFinderを使用しているの設定に格納されているファイルと、staticfiles.finders.AppDirectoriesFinderを使用する各アプリケーションのサブディレクトリstaticINSTALLED_APPS

  4. ここで、pinax_theme_bootstrapは、staticディレクトリにある静的ファイルのみを含み、デフォルトではpinaxアカウントベースプロジェクトによってインストールされます。静的ファイルへのアクセスはstaticfilesアプリで解決されているため、の下にurls.pyというファイルが見つかりません。

  5. プロダクト環境にプロジェクトを展開する場合。 python manage.py collectstaticコマンドを使用して、STATIC_ROOTディレクトリのすべての有用な静的ファイルを収集する必要があります。そして、あなたはNginxや他のhttpサーバによってこのディレクトリを提供することができます。


あなたがhttp://localhost:8000/site_media/static/css/bootstrap.min.cssにアクセスすると、その後、Djangoは、すべての特定の設定意志が最後staticfiles設定まで一致していない、urls.pyでこのURLを一致します。したがって、このアクセスはstaticfilesによって解決されます。 STATICFILES_FINDERの設定によれば、staticfilesには、プロジェクトの最初にstaticディレクトリがあり、結果がnoneの場合はstaticというサブディレクトリがすべてINSTALLED_APPSにあります。

+0

まだ私はそれを取得しません、どこで静的ファイルがどこにあるのかをpinax_theme_boostrapは伝えますか?あまりにも多くの黒い魔法がここで起こっている。 –

+0

更新された質問 –

+0

@StefanoBorini 'staticfiles.finders.AppDirectoriesFinder'を設定すると、静的ファイルはすべてのDjangoアプリケーションの下に' static'という名前のディレクトリにあります。 – risent

関連する問題