これを行うための唯一の決定的なガイドまたは方法を見つけようとして、数え切れないほどの回答と質問に目を通しましたが、誰もが異なる方法を持っているようです. テンプレートで静的ファイルを提供する方法を誰かに説明してもらえますか?
Django 1.4 を使用してまったく新しいプロジェクトを作成したと仮定すると、画像をレンダリングできるようにするために何をする必要がありますか? メディア フォルダーと静的フォルダーはどこに配置すればよいですか?
これを行うための唯一の決定的なガイドまたは方法を見つけようとして、数え切れないほどの回答と質問に目を通しましたが、誰もが異なる方法を持っているようです. テンプレートで静的ファイルを提供する方法を誰かに説明してもらえますか?
Django 1.4 を使用してまったく新しいプロジェクトを作成したと仮定すると、画像をレンダリングできるようにするために何をする必要がありますか? メディア フォルダーと静的フォルダーはどこに配置すればよいですか?
<app>/static
か、絶対パスを追加しますSTATICFILES_DIRS
STATIC_ROOT
STATIC_URL
サーバーが提供するベース URL を指す./manage.py collectstatic
RequestContext
レンダー呼び出しで使用し、{{ STATIC_URL }}
パスのプレフィックスとして使用してくださいDjango の前で Web サーバーを実行する方法についてもう少し説明します。Django は実際にはアプリケーション サーバーです。静的ファイルの提供に適しているようには設計されていません。そのため、 の場合は積極的に拒否しますDEBUG=False
。また、Django 開発サーバーは本番環境には使用しないでください。これは、常に Django の前に何かがあるべきであることを意味します。これは、gunicorn などの WSGI サーバー、または nginx や Apache などの「実際の」Web サーバーである可能性があります。
リバース プロキシ (nginx や Apache など) を実行している場合は/static
、ファイル システム内のパスにバインドし、残りのトラフィックを Django に渡すことができます。つまりSTATIC_URL
、相対パスにすることができます。それ以外の場合は、絶対 URL を使用する必要があります。
作成したプロジェクトには静的フォルダーが必要です。そこにすべてのリソース(画像、...)を入れます。次に、HTMLテンプレートで、STATIC_ROOTを参照し、リソースパスを追加できます(静的フォルダーに対して)
公式ドキュメントは次のとおりです。
静的ファイルの管理方法: https://docs.djangoproject.com/en/1.4/howto/static-files/
一般的な静的ファイル: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/
プロダクション タイプの設定でデプロイする予定がある場合は、次のセクションをお読みください: https://docs.djangoproject.com/en/1.4/howto/static-files/#staticfiles-production
通常、静的フォルダーとメディア フォルダーは django プロジェクト アプリの外に置きます。
あなたのurlconfにこれを入れてください:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
admin.autodiscover()
urlpatterns = patterns('',
.............
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
テンプレート内:
{% load static %}
<img src="{% static 'images.png' %}">
<img src="{{MEDIA_URL}}images.png">