Zajmuję się tworzeniem strony internetowej z wykorzystaniem Django jako zaplecza i chcę umożliwić klientowi dodawanie nowych stron przy użyciu interfejsu administratora - tak, że wpisuje tytuł strony, alias strony, który jest używany do ładniejszych adresów URL, i wybiera, czy chce statycznej treści, czy struktury opartej na artykułach.Dynamiczne adresy URL Django
Moje podejście jest następujące: Stworzyłem aplikację o nazwie sitemanager
, która składa się z opisanego powyżej modelu strony i procesora kontekstowego, który dodaje strony do kontekstu moich szablonów (dla menu itp.) I to działa w porządku.
Oczywiście, ja również potrzebuję podpiąć to do mojego pliku url, ale tutaj zaczyna się problem: mogę, dzięki pythonicowej strukturze Django, odzyskać model Page
w ciągu urls.py
i wygenerować mój wzór adresu URL odpowiednio, i to pokazuje, ale Django wydaje się buforować ten plik (co zwykle ma sens), więc zmiany będą miały miejsce dopiero po restarcie serwera. To oczywiście nie do przyjęcia.
Moim pierwszym pomysłem jest jakoś doprowadzenie aplikacji administratora do zresetowania pamięci podręcznej adresów URL, jeśli nowe strony są dodawane lub usuwane, lub aliasy są modyfikowane (i tylko wtedy, ponieważ buforowanie ogólnie jest dobre), ale ja nie mam pomysł, jak zacząć.
A może jest jeszcze prostsze rozwiązanie, którego nie widzę w tej chwili?
Odpowiednia część mojego urls.py
wygląda w zasadzie tak:
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
Mam nadzieję, że nie popełniłem zbyt wiele błędów podczas zdejmowania tego kodu w mojej głowie!