7

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

これで問題は解決しました。

4

4 に答える 4

10

テンプレートでを使用するには、 を に追加するとともに をSTATIC_URL使用していることを確認する必要があります。ショートカットを使用している場合、これは自動的に行われます。を使用していない場合は、テンプレート タグ ライブラリのテンプレート タグを使用できます。これについては、こちらのドキュメントで詳しく説明しています: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/#other-helpersRequestContext'django.core.context_processors.static'TEMPLATE_CONTEXT_PROCESSORSrenderRequestContext{% get_static_prefix %}staticfiles

于 2012-04-27T18:33:38.720 に答える
1

.' 私は同じ問題を抱えていましたが、上記と同じcoinfurationを使用して、これでうまくいきました.staticfiles_dirsの静的ディレクトリへのパスをsetting.pyに追加しました。

STATICFILES_DIRS = (
os.path.join(PROJECT_DIR,'static'),
)

settings.py PROJECT_DIR にも次のように設定されている場合:

PROJECT_DIR=os.path.dirname(os.path.abspath(__file__))
于 2012-12-29T13:19:29.287 に答える
0

404 から、テンプレートに {{ STATIC_URL }} が含まれていないようです。それがおそらく問題です。「css/file」の代わりに、「{{ STATIC_URL}}css/file」を実行します

よく見なくても、設定は問題ないように見えます。上記の方法でうまくいかない場合は、./manage.py collectstatic を実行してみて、問題が解決するかどうかを確認してください (静的ファイルをアプリ ディレクトリからプロジェクトの静的ディレクトリに移動します)。

そして、必ず urls.py のこれらの行のコメントを外してください! 静的 URL パターンがない場合、/static/ から何かを要求するときに、何をすべきかわかりません。

于 2012-04-27T17:31:30.540 に答える
0

これは、開発サーバーの下で機能しました
。1.アプリケーションの「myblog」ディレクトリの下に「静的」フォルダーを追加しました。
2.「static」フォルダ内に「myblog.css」ファイルを追加。
3. スタイル シートをアプリケーションのテンプレートにリンクしました。コードは以下のとおりです。

<link rel="stylesheet" href="{{ STATIC_URL }}myblog.css" type="text/css" media="screen" />

cssを修正するためにsettings.pyまたはurls.pyファイルを変更しませんでした。変更はチュートリアルに従ってのみ行われたため、同じである必要があります。

于 2013-02-02T16:15:12.910 に答える