Расширение шаблонов Django и CSS - PullRequest
7 голосов
/ 01 декабря 2011

У меня есть такой базовый шаблон:

<head>
    <title>{% block title %}{% endblock %}</title>

    <link rel="stylesheet" href="/static/style.css"/>

А этот текст в логах при обновлении страницы:

[01/Dec/2011 18:22:00] "GET /search/ HTTP/1.1" 200 2760
[01/Dec/2011 18:22:00] "GET /static/style.css HTTP/1.1" 200 54

Итак, это означает, что CSS загружается с сервера корректно. Но это не работает! Если я включу этот CSS как текст непосредственно в базовый шаблон, он будет работать правильно. Конфигурация статических файлов в порядке.

Ответы [ 4 ]

15 голосов
/ 01 декабря 2011

Вы помещаете CSS в блок, который поместит его в головку базы?

/* base.html */
<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
        {% block extra_head %}{% endblock %}
    </head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>


/* another template */
{% extends 'base.html' %}
{% block title %}My Title{% endblock %}
{% block extra_head %}
    <link rel="stylesheet" href="/static/style.css"/>
{% endblock %}
{% block content %}
    <h1>This is my page!</h1>
{% endblock %}

Как в вашем браузере выглядит исходный код страницы? Таблица стилей в голове? Можете ли вы нажать на ссылку и посмотреть фактический CSS?

2 голосов
/ 14 мая 2016

Это очень поздний ответ, но, возможно, более актуальный сейчас, чем это было бы пять лет назад: убедитесь, что редактируемая таблица стилей не генерируется сервером, на котором размещен ваш сайт.

Мне не совсем ясно, вносил ли @RankoR изменения в файл style.css, и не отражались ли они на сайте, или к шаблону применялись нулевые стили, ноесли вы столкнетесь с первым: вы можете быстро исключить возможность того, что он генерируется где-то между вами и его окончательным визуализированным состоянием, добавив вашу собственную папку .css в корневую папку и добавив в нее определение, что выпытаюсь измениться.

Допустим, вы пытаетесь настроить стиль своей панели навигации - если вы хотите изменить .navbar-inverse {background-color: #222; border-color: #090909 } на .navbar-inverse {background-color: #222; border-color: #090909; font:20px bold Arial, sans-serif }, добавьте в новый пустой файл .css .navbar-inverse2 {background-color: #222; border-color: #090909; font:20px bold Arial, sans-serif } и измените.navbar-inverse тег (ы) в вашем HTML navbar-inverse2.Если вы просто свяжете свою таблицу стилей с исходной таблицей в <head>, и это изменение будет отображено: вы на пути в Solution Town!

1 голос
/ 01 декабря 2011

Что вы подразумеваете под "не работает"?Не выполняется ли стилизация, отсутствуют ли изображения и т. Д.?Вы уверены, что сохранили свои изменения в файле CSS?Кажется, файл был найден в /static/style.css, так что, вероятно, там что-то есть ...

0 голосов
/ 01 декабря 2011

Используете ли вы STATIC_URL или MEDIA_URL для доступа к CSS? Если да, добавили ли вы django.contrib.contenttypes в установленные приложения в настройках? Также проверьте STATICFILES_DIRS и STATIC_ROOT / MEDIA_ROOT в настройках. Для получения более подробной информации просмотрите https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/. Также, если вы используете MEDIA_URL, вы можете попытаться обслужить корень медиа в URL, например:

if settings.DEBUG:
urlpatterns += patterns('',        
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)
...