Python 为正在运行的站点动态重新加载URLConfs

Python 为正在运行的站点动态重新加载URLConfs,python,django,Python,Django,我有一个django网站。与所有标准站点一样,它使用URLConfs将URL与视图关联。但是,除此之外,我还有一些URL配置,可以从数据库中的数据动态生成。一切都按照我的要求进行 是否可以在站点运行时从代码重新加载所有URLConf?如果有人更新了数据库并更改了站点中的一些URL,我想触发对所有URL的“重新发现”。这将导致我的代码根据数据库中的数据动态地重新创建URL 目前,生成的URL可以位于URL层次结构中的任何位置。它们并非都在一个前缀下,例如/dynamic/之类。但是,如果这是我必须

我有一个django网站。与所有标准站点一样,它使用URLConfs将URL与视图关联。但是,除此之外,我还有一些URL配置,可以从数据库中的数据动态生成。一切都按照我的要求进行

是否可以在站点运行时从代码重新加载所有URLConf?如果有人更新了数据库并更改了站点中的一些URL,我想触发对所有URL的“重新发现”。这将导致我的代码根据数据库中的数据动态地重新创建URL

目前,生成的URL可以位于URL层次结构中的任何位置。它们并非都在一个前缀下,例如/
dynamic/
之类。但是,如果这是我必须完成的事情,我可以将所有动态URL放在一个前缀下

在重新发现URL时,允许站点停机


我如何触发所有URLConf的重新加载?

您的问题始于一个大多数Django程序员都不会接受的前提:您可以或应该从数据库动态创建URL。如果你这么做了,你就做错了


URL模式是代码的一部分,而不是数据。显然,URL本身是通过将模式与数据相结合形成的-例如
foo//bar/
,但在添加新的slug时不需要重新加载,因为它是由视图而不是URL处理器解决的。

我必须在Texas Tribune上做完全相同的事情。我们使用重定向框架来支持旧的URL方案,同时实现了一个新的URL方案,它的工作非常有魅力。它可能并不完全适合您的需要,但可能会给您一些想法。不必维护旧的URL并将它们重定向到新的URL。我想我的问题更简单。当有人添加一个与新URL相对应的新db条目时,如何重新加载URLConf。目前,我有一个url.py文件,它从数据库创建urlpatterns。如何从代码中重新加载所有urlpatterns?如何使您的urlpatterns成为一个getter属性,每次Django访问它时都会调用它?我同意Daniel的观点。即使在论坛上,我们也没有动态生成模式;它们是在url.py中定义的+丹尼尔,我知道我没有遵循Django设定的模式。然而,现实世界的需求是这样的:1。业务用户可以动态编辑和(很少)添加新页面。2.页面具有URL路径,可以位于站点层次结构3中的任何位置。URL必须是SEO友好的,并且遵循最小惊奇法则(更喜欢/aboutus/而不是/dyn/aboutus/,在/dyn/之后的所有内容都是slug)。flatpages应用程序基本上满足了我的需要,但它缺少一些自定义功能,并且在使用它时不可能按名称引用URL。我认为需要在某些问题上达成妥协。现在,请记住我做错了,在站点初始化之后,是否有可能触发从URL Conf重新生成URL?
import sys    
from django.conf import settings
from django.core.urlresolvers import clear_url_caches

clear_url_caches()
reload(sys.modules[settings.ROOT_URLCONF])