Динамические URL-адреса Django

Я разрабатываю веб-сайт, используя 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

Надеюсь, я не сделал слишком много ошибок, вычищая этот код в своей голове!

13
задан Mariusz Jamro 25 February 2012 в 00:29
поделиться