Я разрабатываю веб-сайт, используя Django в качестве бэкэнда, и я хочу позволить клиенту добавлять новые страницы с помощью интерфейса администратора - поэтому он вводит заголовок страницы, псевдоним страницы, который используется для более хороших URL-адресов, и выбирает, следует лиему нужен статический контент или структура на основе статьи.
Мой подход заключается в следующем: я создал приложение под названием sitemanager
, которое состоит из описанной выше модели страниц и контекстного процессора, который добавляет страницы кконтекст моих шаблонов (для меню и т. д.), и это прекрасно работает.
Конечно, мне также нужно подключить его к моему url-файлу, но здесь начинается проблема: я могу, благодаряПитоническая структура Django, извлекает модель Page
в пределах urls.py
, и соответственно генерирует мой шаблон URL, и он показывает, но Django, похоже, кэширует этот файл (что обычно имеет смысл), поэтому изменения будут иметь место только послеперезапуск сервера.Это, очевидно, неприемлемо.
Моей первой идеей было бы как-то привести приложение администратора к сбросу кеша URL, если новые страницы добавляются, удаляются или изменяются псевдонимы (и только тогда, потому что кеширование обычно являетсяхорошая вещь), но я не знаю, с чего начать.
Или, может быть, есть и более простое решение, которого я сейчас не вижу?
Соответствующая часть моего urls.py
выглядит в основном так:
from sitemanager.models import Page
static_pages = Page.objects.filter(static=True)
article_pages = Page.objects.filter(static=False)
for page in static_pages:
pattern = r'^/'+page.alias+'/$'
urlpatterns += patterns('',
url(pattern, 'views.static_page',
{ 'active': page }
)
)
# Pretty much the same for the article pages,
# but with includes of another app
Надеюсь, я не допустил слишком много ошибок, разбрасывая этот код в моей голове!