2013-08-22 48 views
5

我希望能夠使用反向鏈接查詢以鏈接到預先設置的域名如:在模板沒有視圖Django的URL的conf - 鏈接到另一個域

<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標記作爲其他鏈接。

+0

一定是將是一個沒有看法? [RedirectView的](https://docs.djangoproject.com/en/1.5/ref/class-based-views/flattened-index/#redirectview) –

回答

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' %} 
相關問題