来自sql的django urlpatterns

时间:2011-03-23 12:13:49

标签: django url-pattern

我正在尝试使用sql查询创建urlpatterns,但这只适用于服务器启动时已经在sql表中的那些东西。如果可以让django从数据库动态检查新的URL?

我知道,这可以用正则表达式完成,但是它们太贪婪了,我的意思是,我需要在我的网站的根级别进行此操作,regexp将“吃掉”所有匹配的名称,这个正则表达式必须是最后一个urlpatterns列表。

3 个答案:

答案 0 :(得分:2)

继续你对pyeleven的答案的评论,似乎你已经理解了urlpatterns的观点。您不需要或不想在urlconf中指定您的部分的选项。你所做的是获取网址每个部分的,并将其作为参数传递给视图。所以,例如:

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

这会抓取/name1//name2/等网址,并将name1name2作为section参数传递给视图。因此,无论何时添加部分,都无需更改代码。

答案 1 :(得分:1)

虽然这是可以想象的最恶劣,最不可能的django-esque,但如果你真的想要,你可以从数据库中获取你的网址:

<强> 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模式直接来自db。请不要这样做。

我现在要去洗个澡。

答案 2 :(得分:0)

你检查了django flatpages吗?

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

动态网址可能不是一个好主意,例如动态添加的错误网址行可能会导致服务器停止运行。

你能详细说明你的目标吗?