Я разрабатываю веб-сайт, используя Django в качестве бэкэнда, и я хочу разрешить клиенту добавлять новые страницы с помощью интерфейса администратора - поэтому он вводит заголовок страницы, псевдоним страницы, который используется для более красивых URL-адресов. , и выбирает, хочет ли он статический контент или структуру на основе статей.
Мой подход следующий: я создал приложение под названием sitemanager
, которое состоит из модели страницы, описанной выше, и процессора контекста, который добавляет страницы в контекст моих шаблонов (для меню и т. Д. .), и это прекрасно работает.
Конечно, мне также нужно подключить его к моему url-файлу, но вот где начинаются проблемы: благодаря питонической структуре Django я могу получить модель Page
в пределах ] urls.py
и соответственно сгенерировать мой шаблон url, и он действительно показывает, но Django, похоже, кэширует этот файл (что обычно имеет смысл), поэтому изменения будут внесены только после перезапуска сервера. Это явно неприемлемо.
Моя первая идея заключалась бы в том, чтобы каким-то образом заставить приложение администратора сбрасывать кеш URL-адресов, если добавляются или удаляются новые страницы или изменяются псевдонимы (и только тогда, потому что кеширование в целом - это хорошо), но я понятия не имею как начать там.
Или, может быть, есть более простое решение, которое я сейчас не вижу?
Соответствующая часть моих URL-адресов.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
Надеюсь, я не сделал слишком много ошибок, вычищая этот код в своей голове!