重新加载django url';在不重新启动服务器的情况下停止

重新加载django url';在不重新启动服务器的情况下停止,django,url,caching,urlconf,Django,Url,Caching,Urlconf,为什么??我希望路径的第一级上有多个模型:) 使用:Django 1.4.1 代码设置URL: PAGE_SLUGS = '|'.join(Page.objects.values_list('slug', flat=True)) BRAND_SLUGS = ... same concept (r'^(?P<brand_slug>%s)/$' % BRAND_SLUGS, 'novomore.apps.catalog.views.product_showcase_list'), ur

为什么??我希望路径的第一级上有多个模型:)

使用:Django 1.4.1

代码设置URL:

PAGE_SLUGS = '|'.join(Page.objects.values_list('slug', flat=True))
BRAND_SLUGS = ... same concept
(r'^(?P<brand_slug>%s)/$' % BRAND_SLUGS, 'novomore.apps.catalog.views.product_showcase_list'),

url(r'^%s/$' % PAGE_SLUGS, 'prefab.apps.pages.views.page_detail', name='page'),
我不想对每个请求都运行查询,所以当我添加一个实例时,页面需要更新,所以我使用这个方法

清除url缓存()似乎不起作用

有什么建议吗

这并没有起到作用:

if settings.ROOT_URLCONF in sys.modules:
    reload(sys.modules[settings.ROOT_URLCONF])
    reload(importlib.import_module(settings.ROOT_URLCONF))
发件人:


我不认为你想做的是个好主意。为什么不在URL正则表达式中简单地允许任何slug模式,但如果找不到有问题的
页面
,则返回404?这将产生同样的效果,并且更加简单

url(r'^(?P<slug>\w+)/$', 'prefab.apps.pages.views.page_detail', name='page'),

谢谢你的回答,它仍然不起作用;由于Django 1.4中的评论,我更新了帖子。它不起作用?您可能需要在使用clear_url_caches()重新加载url之前清除url缓存。我发现此解决方案不适用于我,因为单独应用中的url.py也在动态更改,但是
settings.ROOT_URLCONF
上的
reload
仅强制在项目主
urls.py
上重新加载:而不是应用程序级
urls.py
文件。因此,您可能希望迭代应用程序并重新加载每个应用程序的
url.py
。这当然不是我要做的,但我希望在第一级有多个对象,而不是每个传入请求都有一个或多个查询。。查看我最初的帖子,我添加了一个BRAND_SLUGS的例子
import sys
from django.conf import settings

def reload_urlconf(self):
    if settings.ROOT_URLCONF in sys.modules:
        reload(sys.modules[settings.ROOT_URLCONF])
    return import_module(settings.ROOT_URLCONF)
url(r'^(?P<slug>\w+)/$', 'prefab.apps.pages.views.page_detail', name='page'),
from django import shortcuts

def page_detail(request, slug):
    page = shortcuts.get_object_or_404(Page, slug=slug)
    ...