我正在尝试使用sql查询创建urlpatterns,但这只适用于服务器启动时已经在sql表中的那些东西。如果可以让django从数据库动态检查新的URL?
我知道,这可以用正则表达式完成,但是它们太贪婪了,我的意思是,我需要在我的网站的根级别进行此操作,regexp将“吃掉”所有匹配的名称,这个正则表达式必须是最后一个urlpatterns列表。
答案 0 :(得分:2)
继续你对pyeleven的答案的评论,似乎你已经理解了urlpatterns的观点。您不需要或不想在urlconf中指定您的部分的选项。你所做的是获取网址每个部分的值,并将其作为参数传递给视图。所以,例如:
(r'^?P<section>\w+)/$', 'my_view')
这会抓取/name1/
和/name2/
等网址,并将name1
和name2
作为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
动态网址可能不是一个好主意,例如动态添加的错误网址行可能会导致服务器停止运行。
你能详细说明你的目标吗?