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

问题描述 投票:0回答:1

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

使用 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

有没有办法在调用

short_urls.py
default_urls.py
之前强制应用程序从
redirect
“切换”到
raise

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

作为可能的解决方法,我注意到了这段代码:

request.urlconf = settings.ROOT_URLCONF

那么,有没有办法用更新的

redirect
替换
raise
request
哪些使用
urlconf
对象的代码?

django
1个回答
0
投票

终于明白了!

from django.core.urlresolvers import set_urlconf
set_urlconf(settings.ROOT_URLCONF)
© www.soinside.com 2019 - 2024. All rights reserved.