/ / Ako používať Twitter Bootstrap v aplikácii Django - django, twitter-bootstrap

Ako používať službu Twitter Bootstrap v aplikácii Django - django, twitter-bootstrap

Chcem používať službu Twitter Bootstrap v mojej aplikácii Django a na tento účel upravil šablónu nasledujúcim spôsobom:

<!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 a MEDIA_URL sú nastavené správne.

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

Po pridaní štýlov Bootstrap sa však nič nezmenilo (vzhľad stránky sa nezmenil) a predpokladám, že Django nenájde zdroje Bootstrapu.

Čo môže spôsobiť tento problém?

Aktualizácia 1:

Keď tento kód používam 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 sa sťažuje na nedefinované settings variabilné.

odpovede:

9 pre odpoveď č. 1

Musíte použiť MEDIA_URL pri načítaní css a js:

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

Pokiaľ nebudete musieť použiť starú verziu Django, ktorá nie je súčasťou aplikácie statické súbory, odporúčam použiť namiesto toho STATIC_URL a vložiť súbory do súboru static adresára vašej aplikácie.

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

Ako bolo uvedené v komentároch vašej {{ MEDIA_URL }} je prázdny. Aby ste to mohli opraviť, uistite sa, že TEMPLATE_CONTEXT_PROCESSORS nastavenie obsahuje kontextový procesor "statický" a "mediálny". Pokiaľ ste nezmenili nastavenia TEMPLATE_CONTEXT_PROCESSORS, tak to už je.

Procesory kontextu šablóny sa používajú iba pri vykresľovaní šablóny pomocou požiadavky RequestContext. Začínajúc s Django 1.3 najlepší spôsob, ako to urobiť, je pomocou TemplateResponse.

Napríklad:

from django.template.response import TemplateResponse

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

Pre súbory MEDIA_DIR, ktoré majú byť doručené prostredníctvom vývojového servera (manage.py runserver) môžete do svojho adresy urls.py pridať nasledujúci kód:

from django.conf import settings

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