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

Guy*_*den 5 django django-templates

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

在模板中:

<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 }}">

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

Adr*_*ián 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'),
)
Run Code Online (Sandbox Code Playgroud)

然后{% url %}应该像往常一样工作:

{% url 'remote_admin' %}
Run Code Online (Sandbox Code Playgroud)