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

时间:2013-05-21 20:57:00

标签: django

我正在使用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.pydefault_urls.py之前,有没有办法强制应用程序从redirect“切换”到raise

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

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

request.urlconf = settings.ROOT_URLCONF

那么,或者,是否有办法将redirectraise替换为使用request对象的代码与更新后的urlconf

谢谢!

1 个答案:

答案 0 :(得分:0)

终于明白了!

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