0

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

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

有没有办法强制应用程序在调用and之前“切换”short_urls.py到?default_urls.pyredirectraise

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

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

request.urlconf = settings.ROOT_URLCONF

那么,或者,有没有办法替换redirect以及raise使用request带有更新的对象的代码urlconf

谢谢!

4

1 回答 1

0

终于想通了!

from django.core.urlresolvers import set_urlconf
set_urlconf(settings.ROOT_URLCONF)
于 2013-05-22T21:40:18.037 回答