没有视图的Django URL conf - 链接到另一个域

时间:2013-08-22 08:55:16

标签: django django-templates

我希望能够使用反向网址查找以链接到预设域名,例如:

在模板中:

<a href="{% url 'admin_site' %}">Admin</a>

页面可能位于http://www.mydomain.com/home且管理网站可能位于http://admin.mydomain.com - 或处于开发模式时,可能是http://devadmin.localhost

我可以使用环境变量在设置中设置域 - 但是我如何获得将该域放入页面模板的URL框架?

实现这一目标的两条简单途径:

  1. 只需创建一个可能位于/go/admin之类的重定向视图,该视图只会重定向到我设置的任何域。

  2. 在模板上下文中包含我的域并重写href类似<a href="{{ ADMIN_SITE }}">

  3. 两种选择都有效。但两者都有缺点:第一个涉及和额外的重定向步骤,第二个不使用与其他链接相同的url标记。

1 个答案:

答案 0 :(得分:2)

我认为您不能/应该直接向您的urls.py添加外部网址。该文件适用于必须从django服务器解析的URL,因此如果页面位于另一台服务器中......并且您希望使用{% url %},则必须通过重定向。

我会这样做:

from django.conf.urls import patterns, url
from django.views.generic import RedirectView

urlpatterns = patterns('',
    # ...

    url(r'^remote_admin/$', RedirectView.as_view(url='http://admin.mydomain.com'),
        name='remote_admin'),
    url(r'^dev_admin/$', RedirectView.as_view(url='http://devadmin.localhost'),
        name='dev_admin'),
)

然后{% url %}应该照常工作:

{% url 'remote_admin' %}