これまでに投稿した内容に基づくと、のドキュメントをフォローしているようですdjango.contrib.staticfiles
。特にdjangoを初めて使用する場合は、ドキュメントをフォローするのが難しい場合があることに同意します。
混乱は、2つの操作モードがあるという事実から生じていると思いますdjango.contrib.staticfiles
。
- 開発サーバーが使用される開発フェーズでは、事前定義されたディレクトリ内の静的ファイルを動的に検索し、
STATIC_URL
- デプロイメントでは、静的ファイルを単一のディレクトリ(を使用して定義)に照合し
STATIC_ROOT
、静的ファイルに適したWebサーバーを使用して静的ファイルをホストできるようにします。この照合は、を使用して行われpython ./manage.py collectstatic
ます。
起動して実行する方法の概要は次のとおりです。試してみる機会がなかったので、間違いがあるかもしれません。うまくいけば、これはあなたが始めるのを助け、少なくともあなたがドキュメントを理解するのを助けるでしょう。疑問がある場合は、ドキュメントを参照してください。
開発サーバーで静的ファイルをホストする
あなたが持っていることを確認して'django.contrib.staticfiles'
くださいINSTALLED_APPS
を指定しSTATIC_URL
ます。これは、静的ファイルがホストされるパスになります。
STATIC_URL = '/static/'
ファイルが正しいディレクトリにあることを確認してください。デフォルトでは、インストールされている各アプリのディレクトリ内、およびで定義されているディレクトリstaticfiles
内のファイルを検索します。(この動作は、にリストされているバックエンドによって異なります)。あなたの場合、あなたはおそらくあなたのディレクトリを:で指定したいと思うでしょう。static/
STATICFILES_DIRS
STATICFILES_FINDERS
STATICFILES_DIRS
STATICFILES_DIRS = (
'C:/Users/Dan/seminarWebsite/static/',
)
末尾に以下を追加して、ビューにアクセスできるようにしますurls.py
。
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
DEBUG = True
にあることを確認してくださいsettings.py
。
それでおしまい。
開発サーバー()を実行すると、 (を提供する)./manage.py runserver
を介してファイルにアクセスできるはずです。http://localhost:8000/static/images/vision.jpeg
C:/Users/Dan/seminarWebsite/static/images/vision/jpeg
テンプレート内の静的ファイルへのリンク
静的ファイルの正しいリンクを取得するには、staticfilesテンプレートタグを使用する方法と、テンプレートにSTATIC_URL
アクセスできるようにする方法の2つがあります。あなたは後者を試みたので、私たちはそれに固執します。
'django.core.context_processors.static'
にあることを確認してくださいTEMPLATE_CONTEXT_PROCESSORS
。再定義していない場合はTEMPLATE_CONTEXT_PROCESSORS
、デフォルトで存在するはずなので、何もする必要はありません。
テンプレートをレンダリングするときは、必ずRequestContextを使用してください。例:
from django.template import RequestContext
# ...
def some_view(request):
# ...
return render_to_response('my_template.html', {
"foo" : "bar", # other context
}, context_instance = RequestContext(request))
これで、次のものを使用できるようになりますmy_template.html
。
<a href="{{ STATIC_URL }}images/vision.jpeg" />
本番サーバーで静的ファイルをホストします。
提供する必要のあるすべての静的ファイルがその1つのディレクトリ(C:/Users/Dan/seminarWebsite/static
)に格納されている場合は、ほぼそこにあります。そのディレクトリ/static/
(または設定STATIC_URL
したもの)をホストするようにWebサーバーを設定するだけで、準備は完了です。
異なるディレクトリやアプリ固有の静的ファイルにファイルが散在している場合は、それらを照合する必要があります。
照合したファイルを保存するディレクトリに設定STATIC_ROOT
します。
./manage.py collectstatic
照合を実行するために実行します。
STATIC_ROOT
そのディレクトリ( )をホストするようにWebサーバーを構成します/static/
(または設定STATIC_URL
したもの)。