django-hosts 强制重新加载不同的 urls.py

Posted

技术标签:

【中文标题】django-hosts 强制重新加载不同的 urls.py【英文标题】:django-hosts force reload of a different urls.py 【发布时间】:2013-05-16 18:32:49 【问题描述】:

我正在使用django-hosts 让不同的域名指向一个 Django 应用程序。我的大部分 Django 应用程序为 mydomain.com 的站点提供服务,但有一个函数处理短 URL,例如 mydoma.in。

使用 django-hosts default_urls.py 用于 mydomain.com,short_urls.py 用于 mydoma.in。根据请求的域加载一个且只有一个*_urls.py 文件。

但是,在两种情况下,我似乎需要向 mydoma.in 发出请求以了解 default_urls.py 才能正确完成。这是我的views.py文件中的相关代码:

def short_url(request, value):
    try:
        object = Object.objects.get(key=value)
        # (1)  Need to load default_urls.py here to /object URL is resolved
        return redirect (settings.BASE_URL + object.get_absolute_url(), permanent=True)
    except:
        # (2)  Need to load default_urls.py here to 404 page renders
        raise Http404

在调用redirectraise 之前,有没有办法强制应用程序从short_urls.py“切换”到default_urls.py

(我不能只将相关路由从一个文件复制到另一个文件,否则 URL 将在两个域下解析。)

作为可能的解决方法,我记下了这段代码:

request.urlconf = settings.ROOT_URLCONF

那么,或者,有没有办法用更新的urlconf 替换使用request 对象的代码redirectraise

谢谢!

【问题讨论】:

【参考方案1】:

终于明白了!

from django.core.urlresolvers import set_urlconf
set_urlconf(settings.ROOT_URLCONF)

【讨论】:

以上是关于django-hosts 强制重新加载不同的 urls.py的主要内容,如果未能解决你的问题,请参考以下文章

如果 url 中的所有更改都是哈希,如何强制页面重新加载?

如何在 cellEdit 之后强制从持久存储重新加载核心数据

强制 UIPickerView 重新加载数据

如何强制重新加载缓存的 HTML 文件

强制 python 解释器重新加载代码模块

强制 sbt 重新加载整个构建定义