5

我希望能够使用反向 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其他链接相同的标签。

4

1 回答 1

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' %}
于 2013-08-22T09:49:13.317 回答