5

Django アプリケーションで Twitter Bootstrap を使用したいのですが、この目的のためにテンプレートを次のように変更しました。

<!DOCTYPE html>

<html>
<head>
    <title>{{ genplan.name }}</title>
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
    <h1>{{ genplan.name }}</h1>
    <ol>
        {% for cur_goal in goals %}
            <li>{{ cur_goal.description }}</li>
        {% endfor %}
    </ol>

    ...
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
</html>

MEDIA_ROOTMEDIA_URL正しく設定されています。

MEDIA_ROOT = 'D:/dev/ccp/ccp-gp/media'
MEDIA_URL = '/media/'

ただし、Bootstrap スタイルシートを追加しても何も変わっていません (そのページの外観は変わりません)。Django が Bootstrap リソースを見つけられないと思います。

この問題の原因は何ですか?

更新 1:

このコードを使用するとurls.py

urlpatterns = patterns('',
    (r'^$', 'ccp_gp.general_plans.views.home'),     (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})     )

Python は、未定義settingsの変数について文句を言います。

4

1 に答える 1

9

MEDIA_URLcss と js をロードするときに使用する必要があります。

<link href="{{ MEDIA_URL }}css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="{{ MEDIA_URL }}js/bootstrap.min.js"></script>

静的ファイル アプリに付属していない古い Django バージョンを使用する必要がない限り、代わりに STATIC_URL を使用し、ファイルをstaticアプリのディレクトリに配置することをお勧めします。

<link href="{{ STATIC_URL }}css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="{{ STATIC_URL }}js/bootstrap.min.js"></script>

コメントで述べたように、あなた{{ MEDIA_URL }}は空です。これを修正するには、TEMPLATE_CONTEXT_PROCESSORS設定に「静的」および「メディア」コンテキスト プロセッサが含まれていることを確認してください。TEMPLATE_CONTEXT_PROCESSORS 設定を変更していない限り、これはすでに当てはまります。

テンプレート コンテキスト プロセッサは、RequestContext を使用してテンプレートをレンダリングする場合にのみ使用されます。Django 1.3 以降では、これを行う最善の方法はTemplateResponseを使用することです。

例えば:

from django.template.response import TemplateResponse

def index(request):
    genplan = ...
    goals = ...
    return TemplateResponse(request, 'index.html', {
        'genplan': genplan,
        'goals': goals,
    })

MEDIA_DIR 内のファイルを開発サーバー ( manage.py runserver) 経由で配信するには、次のコードを urls.py に追加します。

from django.conf import settings

if settings.DEBUG:
    urlpatterns += (
        url(r'^media/(.*)$', 'django.views.static.serve',
                    {'document_root': settings.MEDIA_ROOT}),
    )
于 2013-01-28T21:45:03.510 に答える