我希望能够使用反向网址查找以链接到预设域名,例如:
在模板中:
<a href="{% url 'admin_site' %}">Admin</a>
页面可能位于http://www.mydomain.com/home
且管理网站可能位于http://admin.mydomain.com
- 或处于开发模式时,可能是http://devadmin.localhost
我可以使用环境变量在设置中设置域 - 但是我如何获得将该域放入页面模板的URL框架?
实现这一目标的两条简单途径:
只需创建一个可能位于/go/admin
之类的重定向视图,该视图只会重定向到我设置的任何域。
在模板上下文中包含我的域并重写href类似<a href="{{ ADMIN_SITE }}">
两种选择都有效。但两者都有缺点:第一个涉及和额外的重定向步骤,第二个不使用与其他链接相同的url
标记。
答案 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' %}