Джанго urlpatterns из sql - PullRequest
       8

Джанго urlpatterns из sql

0 голосов
/ 23 марта 2011

Я пытаюсь создать urlpatterns с SQL-запросом, но это будет работать только для тех вещей, которые уже были в SQL-таблице на момент запуска сервера. Если возможно, чтобы django динамически проверял наличие новых URL из базы данных?

Я знаю, это можно сделать с помощью регулярных выражений, но они слишком жадные, я имею в виду, что мне нужно сделать это на корневом уровне моего сайта, и регулярное выражение "съест" все совпадающие имена, и это регулярное выражение должно быть последний из списка urlpatterns.

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Продолжая свой комментарий к ответу Пилевена, кажется, вы поняли смысл urlpatterns.Вам не нужно или не нужно указывать выбор вашего раздела в urlconf.Что вы делаете, это захватываете значение каждой секции URL и передаете это как параметр в представление.Так, например:

(r'^?P<section>\w+)/$', 'my_view')

Это будет захватывать URL-адреса, такие как /name1/ и /name2/, и передавать name1 и name2 в представление в качестве параметра section.Поэтому нет необходимости менять код всякий раз, когда вы добавляете раздел.

1 голос
/ 23 марта 2011

Несмотря на то, что это самая отвратительная, самая недюжинная вещь, которую вы только можете себе представить, вы можете получить свои URL-адреса из БД, если вы действительно хотите:

models.py :

from django.db import models

class Url(models.Model):
    name = models.CharField(max_length=20)

urls.py :

from my_app.models import Url

urls = []
for url_object in Url.objects.all():
    urls.append(url(url_object.name, 'my_view'))

urlpatterns = patterns('my_app.views', *urls)

Вуаля.Это на самом деле работает.Шаблоны URL прямо из БД.Пожалуйста, не делайте этого.

Я пойду приму душ.

0 голосов
/ 23 марта 2011

Вы проверяли плоские страницы django?

http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/?from=olddocs

Динамический URL-адрес может быть не очень хорошей идеей, например, добавление динамически неверной строки URL-адреса может привести к остановке работы сервера.

Можете ли вы уточнить ваши цели?

...