Использование сервера разработчиков Django не отображает стили или favico - PullRequest
0 голосов
/ 10 декабря 2011

Кажется, у меня какая-то проблема с рендерингом, возможно связанная с бесплатным сервером разработки Django (manage.py runserver).У меня есть base.html, который расширяет мои другие файлы.Базовый файл использует и внешний CSS-файл для форматирования.Когда делается запрос на загрузку страницы, форматирование, определенное в листе CSS, не отображается на странице, но весь код из базы должным образом распространяется на файл.Таким образом, чтобы быть ясным, я открываю источник из браузера для страницы, которая не отображает форматирование.Я проверяю весь код, который я ожидаю увидеть, расширен от базы, включая вызов файла CSS.Затем я копирую и вставляю из окна «Просмотр источника» в новый текстовый файл с расширением html и сохраняю в том же каталоге, что и база.Затем, не используя сервер, я просто открываю файл в браузере (дважды щелкаю по нему) и все форматирование там.То же самое относится и к значку «favico», используемому в адресной строке и области вкладок.Я могу скопировать текст из браузера и сохранить его, а затем снова открыть, не используя сервер, и отображается значок ... что я делаю не так?

Также, чтобы было ясно, нет сообщения об ошибке, просто нет форматирования.При запуске сервера отображается текст для страницы без форматирования ... поэтому фон белый, а не цветной, и форматирование шрифтов отсутствует, только форматирование HTML по умолчанию.

urls.py может быть, где моя проблема.Этот сайт извлекает содержимое веб-страницы из базы данных и отправляет его в общий HTML-файл, который затем заполняется содержимым страницы.Общий HTML-файл (view.html) расширяется от базы, а база форматируется внешним CSS-файлом.Так что страницы на самом деле не существуют независимо.

В views.py принцип работы в основном основан на 3 URL-адресах: просмотр, редактирование, сохранение.

  • Если URL-адрес не существует, то файл views.py вызывает файл edit.html, который открывает окно с областью ввода, где я могу добавить свой код.Затем я нажимаю кнопку «Сохранить», и все текстовое содержимое, которое фактически является HTML-кодом, сохраняется в БД.
  • Если имя страницы существует в базе данных, то содержимое этой страницы извлекается и отправляется в представление..html.

И снова, чтобы было ясно, все это работает.Функция браузера для просмотра исходного кода отображает всю информацию, которую я хочу, и я могу скопировать и вставить ее в другой файл, и это работает.

Вот соответствующие строки URLS.PY ...

  url(r'^NWTACOL/page/(?P<page_name>[^/]*)/edit/$', 'NWTACOL.page.views.edit_page'),
  url(r'^NWTACOL/page/(?P<page_name>[^/]*)/save/$', 'NWTACOL.page.views.save_page'),
  url(r'^NWTACOL/page/(?P<page_name>[^/]*)/$', 'NWTACOL.page.views.view_page'),

Настройка URL-адреса мультимедиа пуста (я все еще учусь, и я не думаю, что уже сталкивался с этим параметром влюбые мои тренинги. Я пойду читать об этом сейчас)

MEDIA_URL = ''

Ссылка на мой файл CSS

<link href="../Main_Style.css" rel="stylesheet" type="text/css" />

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Я также собираюсь предположить, что вы используете Django 1.3, потому что новые пользователи очень часто сталкиваются с новой реализацией staticfiles:

Во-первых, укажите STATIC_URL и STATIC_ROOT в вашем settings.py.Обычный способ:

import os.path

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')
STATIC_URL = '/static/'

Если все ваши статические ресурсы находятся в «статических» каталогах в одном или нескольких приложениях, все готово.Django автоматически предоставит их вам в STATIC_URL, когда DEBUG=True.

Однако, если у вас есть другой каталог, в котором вы храните статические файлы (например, для CSS для шаблона всего сайта, который неприменяется только к одному приложению).Вы должны указать Django рассматривать эти другие каталоги как каталоги staticfiles:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'assets'),
)

Я выбрал здесь "assets", потому что вы не можете использовать каталог для MEDIA_ROOT (обычно "site_media")за это.MEDIA_ROOT и MEDIA_URL, соответственно, предназначены только для загрузок.

Кроме того, вы не можете хранить ваши файлы в STATIC_ROOT.Это кажется нелогичным, но STATIC_ROOT - это просто каталог, в котором Django хранит файлы, когда вы запускаете команду управления collectstatic.На самом деле он никогда не отправляет файлы отсюда, потому что это то, что должен делать ваш производственный веб-сервер.

Итак, чтобы подвести итог, вам, вероятно, понадобятся три каталога для статических ресурсов:

  1. Каталог для пользователяuploads (MEDIA_ROOT, обычно "site_media")
  2. Каталог для collectstatic ('STATIC_ROOT`, обычно "static")
  3. Каталог для статических файлов всего проекта (укажите вSTATICFILES_DIRS, называйте это как хотите)

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

ADMIN_MEDIA_PREFIX = STATIC_URL+'admin/'
0 голосов
/ 10 декабря 2011

Используете ли вы приложение staticfiles и Django 1.3? Он должен автоматически подавать css, js, image и т. Д. По пути: / static, если у вас DEBUG = True. Если нет, вам нужно будет предоставить свой собственный шаблон URL и представление для обслуживания статических носителей.

Проверьте DOS по адресу: https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...