Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自sql的django URL模式_Django_Url Pattern - Fatal编程技术网

来自sql的django URL模式

来自sql的django URL模式,django,url-pattern,Django,Url Pattern,我试图用sql查询创建urlpatterns,但这只适用于在服务器启动时sql表中已经存在的内容。是否可以让django从数据库中动态检查新URL 我知道,正则表达式可以做到这一点,但它们太贪婪了,我的意思是,我需要在我的站点的根级别上这样做,regexp将“吃掉”所有匹配的名称,而这个regexp必须是urlpatterns列表的最后一个。你检查过django flatpages吗 动态url可能不是一个好主意,例如,动态添加的错误url行可能会使服务器停止运行 你能详细说明你的目标吗?你看

我试图用sql查询创建urlpatterns,但这只适用于在服务器启动时sql表中已经存在的内容。是否可以让django从数据库中动态检查新URL


我知道,正则表达式可以做到这一点,但它们太贪婪了,我的意思是,我需要在我的站点的根级别上这样做,regexp将“吃掉”所有匹配的名称,而这个regexp必须是urlpatterns列表的最后一个。

你检查过django flatpages吗

动态url可能不是一个好主意,例如,动态添加的错误url行可能会使服务器停止运行


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

你看过django flatpages了吗

动态url可能不是一个好主意,例如,动态添加的错误url行可能会使服务器停止运行


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

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

(r'^?P<section>\w+)/$', 'my_view')
(r'^?P\w+/$,“我的视图”)

这将获取像
/name1/
/name2/
这样的URL,并将
name1
name2
作为
部分
参数传递给视图。因此,无论何时添加节,都不需要更改代码。

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

(r'^?P<section>\w+)/$', 'my_view')
(r'^?P\w+/$,“我的视图”)

这将获取像
/name1/
/name2/
这样的URL,并将
name1
name2
作为
部分
参数传递给视图。因此,无论何时添加节,都无需更改代码。

尽管这是可以想象到的最肮脏、最不django风格的事情,但如果您真的想:

型号.py

from django.db import models

class Url(models.Model):
    name = models.CharField(max_length=20)
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.py

from django.db import models

class Url(models.Model):
    name = models.CharField(max_length=20)
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模式。请不要这样做


我现在要去洗个澡

尽管这是你能想象到的最肮脏、最没有德扬戈风格的事情,但如果你真的想:

型号.py

from django.db import models

class Url(models.Model):
    name = models.CharField(max_length=20)
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.py

from django.db import models

class Url(models.Model):
    name = models.CharField(max_length=20)
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模式。请不要这样做


我现在要去洗个澡

我想把网站分为主要类别,如果你从一开始就知道你将使用哪些类别,这没有问题,但如果你不知道你需要找到一些方法来添加它们,我认为每次添加主要类别时编辑网站的源代码是个坏主意。所以,我试图从sql数据库中获取主要类别:它将允许通过管理界面轻松添加它们(甚至删除),我想获取URL,比如urlpatterns=patterns(“”,(^name1/$,major\u page),(^name2/$,major\u page),)是的,它们应该指向我将处理它们的相同视图。我想将网站划分为主要类别,如果你从一开始就知道你将使用哪些类别,这没有问题,但是如果你不知道你需要找到一些方法来添加它们,我认为每次添加主要类别时编辑网站的源代码是个坏主意。所以,我试图从sql数据库中获取主要类别:它允许通过管理界面轻松添加(甚至删除)我想要获取URL,比如urlpatterns=patterns(“”,(^name1/$,major\u page),(^name2/$,major\u page),)是的,它们应该指向我将处理它们的相同视图不,这不是我想要实现的。这将只发送到“我的视图”命名组,如section=“name1”。我希望在urlpatterns中避免使用regexp(或者可能会限制regexp的范围,但我不想将其更深一层,比如“domain.com/major/name1”),这似乎是正确的方法。如果你担心这个正则表达式会“吃掉”所有东西,只需将它放在所有其他URL的下面,以便它们首先匹配。然后,如果该部分不在DB中,只需从您的视图中提出404即可。这种方法的一个缺点是,除非您使用某种前缀限定这些URL,否则该规则将始终成功。我发现这样做的一个后果是APPEND_SLASH变量不会有任何效果,因为它只在URL匹配失败后才会生效。有人知道这件事吗?还有其他的缺点吗?不,这不是我想要达到的。这将只发送到“我的视图”命名组,如section=“name1”。我希望在urlpatterns中避免使用regexp(或者可能会限制regexp的范围,但我不想将其更深一层,比如“domain.com/major/name1”),这似乎是正确的方法。如果你担心这个正则表达式会“吃掉”所有东西,只需将它放在所有其他URL的下面,以便它们首先匹配。然后,如果该部分不在DB中,只需从您的视图中提出404即可。这种方法的一个缺点是,除非您使用某种前缀限定这些URL,否则该规则将始终成功。我发现这样做的一个后果是APPEND_SLASH变量不会有任何效果,因为它只在URL匹配失败后才会生效。有人知道这件事吗?还有其他缺点吗?不过有一个警告-我相信每次数据库中有新的url时,您都必须重新启动进程,因为我相信url.py在启动时只解析一次。这真的不是个好主意。好的,谢谢。你们能告诉我,为什么从db获取url是个坏主意吗?好吧,就像我说的——我想这段代码会继续