/ / Як використовувати програму 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 (зовнішній вигляд цієї сторінки не змінювався), і я думаю, що 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})     )

Python скаржиться на невизначеність 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 Налаштування містить контекстний процесор "статичний" та "медіа". Якщо ви не змінили налаштування 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,
})

Щоб файли в 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}),
)