我正在尝试使用 sql 查询创建 urlpatterns,但这仅适用于服务器启动时已经存在于 sql 表中的那些内容。如果可以让 django 从数据库中动态检查新的 url?
我知道,这可以用正则表达式来完成,但是它们太贪心了,我的意思是,我需要在我的站点的根级别进行此操作,并且正则表达式将“吃掉”所有匹配的名称,并且此正则表达式必须是 urlpatterns 的最后一个列表。
我正在尝试使用 sql 查询创建 urlpatterns,但这仅适用于服务器启动时已经存在于 sql 表中的那些内容。如果可以让 django 从数据库中动态检查新的 url?
我知道,这可以用正则表达式来完成,但是它们太贪心了,我的意思是,我需要在我的站点的根级别进行此操作,并且正则表达式将“吃掉”所有匹配的名称,并且此正则表达式必须是 urlpatterns 的最后一个列表。
尽管这是可以想象到的最讨厌、最不像 django 的东西,但如果你真的、真的想要的话,你可以从 db 中获取你的 url:
模型.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 模式。请不要这样做。
我现在要去洗澡了。
继续对 pyeleven 的回答发表评论,看来您已经理解了 urlpatterns 的意义。您不需要或不想在 urlconf 中指定您的部分的选择。您所做的是获取 url 的每个部分的值,并将其作为参数传递给视图。因此,例如:
(r'^?P<section>\w+)/$', 'my_view')
这将抓取像/name1/
and之类的 url,并将and作为参数/name2/
传递给视图。因此,无论何时添加部分都无需更改代码。name1
name2
section
你检查过 django flatpages 吗?
http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/?from=olddocs
动态 url 可能不是一个好主意,例如动态添加的错误 url 行可能会使服务器停止运行。
你能详细说明你的目标吗?