/ / Как да използвате Twitter Bootstrap в приложение Django - django, twitter-bootstrap

Как да използвате Twitter Bootstrap в приложение Django - django, twitter-bootstrap

Искам да използвам Twitter Bootstrap в моето Django приложение и за тази цел модифицирам шаблона по следния начин:

<!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 и MEDIA_URL са настроени правилно.

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

Но нищо не се е променило, след като добавих стиловите таблици в Bootstrap (изглежданието на тази страница не се промени) и предполагам, че Джанго не намира ресурсите за 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})     )

Питън се оплаква от недефинираните settings променлива.

Отговори:

9 за отговор № 1

Трябва да използвате 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>

Освен ако не трябва да използвате стара версия на 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 настройките съдържат процесора "static" и "media". Освен ако не сте променили настройките TEMPLATE_CONTEXT_PROCESSORS, това вече е така.

Процесорите на контекста на шаблона се използват само при рендиране на шаблон с requestContext. Започвайки с Django 1.3, най-добрият начин да направите това е с помощта на a 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}),
)