/ / Come usare Twitter Bootstrap in un'applicazione Django - django, twitter-bootstrap

Come usare Twitter Bootstrap in un'applicazione Django - django, twitter-bootstrap

Voglio usare Twitter Bootstrap nella mia applicazione Django e per questo scopo ho modificato il modello nel modo seguente:

<!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 e MEDIA_URL sono impostati correttamente.

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

Tuttavia, non è cambiato nulla dopo aver aggiunto i fogli di stile Bootstrap (l'aspetto di quella pagina non è cambiato) e suppongo che Django non trovi le risorse Bootstrap.

Cosa potrebbe aver causato questo problema?

Aggiornamento 1:

Quando uso questo codice 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 si lamenta di indefinito settings variabile.

risposte:

9 per risposta № 1

Devi usare il MEDIA_URL durante il caricamento di css e js:

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

A meno che tu non debba usare una vecchia versione di Django che non viene fornita con l'app per file statici, ti consiglio di usare STATIC_URL invece di mettere i file nel static directory della tua app.

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

Come affermato nei commenti il ​​tuo {{ MEDIA_URL }} è vuoto. Al fine di risolvere ciò assicuratevi che il TEMPLATE_CONTEXT_PROCESSORS le impostazioni contengono il processore di contesto "statico" e "multimediale". A meno che tu non abbia modificato le impostazioni TEMPLATE_CONTEXT_PROCESSORS, questo è già il caso.

I processori di contesto del modello vengono utilizzati solo durante il rendering di un modello con RequestContext. A partire da Django 1.3 il modo migliore per farlo è utilizzando a TemplateResponse.

Per esempio:

from django.template.response import TemplateResponse

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

Per i file in MEDIA_DIR essere consegnati tramite il server di sviluppo (manage.py runserver) puoi aggiungere il seguente codice al tuo urls.py:

from django.conf import settings

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