Django の最新バージョン (1.4.1) をダウンロードしましたが、runserver を使用してローカルで開発する場合に css ファイルを提供する方法がわかりません。静的ファイルに関する関連するDjango ドキュメントと、ここでの多くの質問と回答を読みました...多かれ少なかれ自動化されているように聞こえますが、私にとってはうまくいきません。
チュートリアルの投票アプリに取り組んでいます。
ログからの404
[27/Apr/2012 01:04:09] "GET /polls/ HTTP/1.1" 200 210
[27/Apr/2012 01:04:09] "GET /polls/css/styles.css HTTP/1.1" 404 2596
ディレクトリ構造
mysite
|-- manage.py
|-- mysite
|-- __init__.py
|-- settings.py
|-- urls.py
|-- wsgi.py
|-- polls
|-- __init__.py
|-- models.py
|-- tests.py
|-- views.py
|-- static
|-- css
|-- styles.css
|-- templates
|-- polls
|-- index.html
index.html
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/styles.css">
設定.py
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
'django.core.context_processors.static',
)
^^^ プロジェクトを開始したとき、settings.py に TEMPLATE_CONTEXT_PROCESSORS 変数がなく、手動で追加する必要がありました。心配する必要がありますか?
STATICFILES_DIRS は空です。css ファイルは、投票アプリ内の static という名前のディレクトリにあり、Django が自動的に検索する場所です。
INSTALLED_APPS には django.contrib.staticfiles もあります。
urls.py
ドキュメントで、このソリューションが runserver以外のローカル開発サーバーで機能することを見ました。それ以外の場合は必要ないようですね。(現在はコメントアウトしています。)
編集:これらの行のコメントを外しましたが、変更は見られませんでした-cssファイルで同じ404を取得しています
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
ディレクトリ構造の設定が間違っていませんか? settings.py に必要な設定がありませんか? どんな助けでも大歓迎です!ありがとう!
編集:
私はマークの提案を受けて、RequestContext を読みました。私の見解を次のように変更します。
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
に
from django.template import RequestContext
...
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list}, context_instance=RequestContext(request))
登録する /static/ URL を取得しました:
[27/Apr/2012 13:56:55] "GET /static/css/styles.css HTTP/1.1" 200 19
これで問題は解決しました。