如何在Django应用程序中使用Twitter Bootstrap

DP_*_*DP_ 5 django twitter-bootstrap

我想在我的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>
Run Code Online (Sandbox Code Playgroud)

MEDIA_ROOTMEDIA_URL正确设置.

MEDIA_ROOT = 'D:/dev/ccp/ccp-gp/media'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

但是,在我添加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})     )
Run Code Online (Sandbox Code Playgroud)

Python抱怨未定义的settings变量.

bik*_*der 9

你需要MEDIA_URL在加载css和js时使用:

<link href="{{ MEDIA_URL }}css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="{{ MEDIA_URL }}js/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

除非您必须使用静态文件应用程序未附带的旧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>
Run Code Online (Sandbox Code Playgroud)

正如评论中所述,你{{ 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,
    })
Run Code Online (Sandbox Code Playgroud)

要通过开发服务器(manage.py runserver)传递MEDIA_DIR中的文件,您可以将以下代码添加到urls.py:

from django.conf import settings

if settings.DEBUG:
    urlpatterns += (
        url(r'^media/(.*)$', 'django.views.static.serve',
                    {'document_root': settings.MEDIA_ROOT}),
    )
Run Code Online (Sandbox Code Playgroud)