これは、主題に関する同様のタイトルの量から判断すると、多くの混乱の原因のようですが、静的ファイルで見つけたすべてのものをDjango開発サーバーで試してみて、ほとんど希望を捨てました!!
したがって、静的ファイルはC:/ Users/Dan/seminarWebsite/static /から提供され、画像やcssなどのサブフォルダーがあります。
設定:
STATIC_ROOT = 'C:/Users/Dan/seminarWebsite/static/'
STATIC_URL = '/static/'
静的ファイルアプリもアクティブです。
RL:
from Django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
テンプレート:
"{{ STATIC_URL }}images/vision.jpeg"
ただし、壊れたリンクのみが表示され、次のアドレスに表示されます:http://127.0.0.1:8000/homepage/images/vision.jpeg
そして私はそれがそのアドレスにあるべきではないと思います(ホームページは静止画像ファイルが呼び出されているページのURL名です)。
これまでに投稿した内容に基づくと、 Django.contrib.staticfiles
のドキュメントをフォローしているようです。特にDjangoを初めて使用する場合は、 docs をフォローするのが難しい場合があることに同意します。
混乱は、Django.contrib.staticfiles
に2つのモードの操作があるという事実から生じていると思います。
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
のendに以下を追加して、ビューにアクセスできるようにします。
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
を提供)を介してファイルにアクセスできるはずです。
静的ファイルの正しいリンクを取得するには、2つの方法があります。 staticfilesテンプレートタグ を使用する方法と、テンプレートからSTATIC_URL
にアクセスできるようにする方法です。あなたは後者を試みたので、私たちはそれに固執します。
'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
(または/static/
に設定したもの)でそのディレクトリ(STATIC_URL
)をホストするようにWebサーバーを構成します。