/ / Wie man Twitter Bootstrap in einer Django Anwendung benutzt - django, twitter-bootstrap

Wie man Twitter Bootstrap in einer Django Anwendung benutzt - django, twitter-bootstrap

Ich möchte Twitter Bootstrap in meiner Django-Anwendung verwenden und habe zu diesem Zweck die Vorlage folgendermaßen geändert:

<!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_ROOT und MEDIA_URL sind richtig eingestellt.

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

Nach dem Hinzufügen der Bootstrap-Stylesheets hat sich jedoch nichts geändert (das Aussehen dieser Seite hat sich nicht geändert) und ich nehme an, dass Django die Bootstrap-Ressourcen nicht findet.

Was könnte dieses Problem verursacht haben?

Update 1:

Wenn ich diesen Code verwende 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 beschwert sich über undefiniert settings Variable.

Antworten:

9 für die Antwort № 1

Sie müssen das verwenden MEDIA_URL beim Laden der CSS und JS:

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

Wenn Sie nicht eine alte Django - Version verwenden müssen, die nicht mit der App für statische Dateien geliefert wird, würde ich stattdessen STATIC_URL empfehlen und die Dateien in die static Verzeichnis Ihrer App.

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

Wie in den Kommentaren angegeben {{ MEDIA_URL }} ist leer. Um das zu beheben, stellen Sie sicher, dass die TEMPLATE_CONTEXT_PROCESSORS settings enthält den Kontextprozessor "static" und "media". Sofern Sie die Einstellungen von TEMPLATE_CONTEXT_PROCESSORS nicht geändert haben, ist dies bereits der Fall.

Die Vorlagenkontextprozessoren werden nur beim Rendern einer Vorlage mit RequestContext verwendet. Beginnend mit Django 1.3 ist der beste Weg, dies zu tun, mit a TemplateResponse.

Beispielsweise:

from django.template.response import TemplateResponse

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

Damit die Dateien im MEDIA_DIR über den Entwicklungsserver (manage.py runserver) Sie können Ihrem urls.py folgenden Code hinzufügen:

from django.conf import settings

if settings.DEBUG:
urlpatterns += (
url(r"^media/(.*)$", "django.views.static.serve",
{"document_root": settings.MEDIA_ROOT}),
)