0

デフォルトのビューを使用して、スタイルシートと画像を404ページのテンプレートに含めるにはどうすればよいですか?

404.htmlサイトのtemplatesディレクトリのルートにファイルを作成しました。

<!DOCTYPE html>
<html>
<head>
    {% load static %}
    <link rel="stylesheet" href="{% get_static_prefix %}css/404.css" />
</head>
<body class="page-404">
    <p>Not found.</p>
</body>
</html>

皮肉なことに、404.cssは見つかりません。この404.cssファイルは、アプリのstaticディレクトリの1つにあります。

サーバーはmanage.py runserverです。他のすべてのページでは、静的ファイルが適切に提供されます。

更新:で設定DEBUG = Falseした後settings.py、他のすべてのページの静的ファイルも提供されなくなったようです。

4

3 に答える 3

2

表示されますが、staticfilesアプリはで動作しDEBUG = Falseます。static個々のアプリのディレクトリからファイルを取得しないだけです。グローバルSTATIC_ROOTディレクトリ(from settings.py)からファイルを提供します。

静的ファイルをにコピーするには、次のコマンドSTATIC_ROOTを実行する必要があります。collectstatic

python manage.py collectstatic
于 2011-10-30T17:00:09.273 に答える
0

コンテスト_processor.staticはすでにTEMPLATE_CONTEXTにあるので!テンプレートで変数STATIC_URLを使用できます。次のドキュメントを参照してください。

https://docs.djangoproject.com/en/1.3/ref/templates/api/#django-core-context-processors-static

TEMPLATE_CONTEXT_PROCESSORSにこのプロセッサが含まれている場合、すべてのRequestContextに変数STATIC_URLが含まれ、STATIC_URL設定の値を提供します。

また、404ビューハンドラーがRequestContextオブジェクトを使用していることもわかっています。これは、django.views.defaults.pyから取得したコードに従います。

return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path}))) 

したがって{{ STATIC_URL }}、テンプレートで使用するだけで、機能するはずです。

于 2011-10-30T17:02:11.390 に答える
0

DEBUG = Trueを使用している場合、通常、ルートurlconfに次のスニペットがあります。

(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}),
于 2011-10-31T00:54:35.490 に答える