2013-08-22 6 views
5

Chciałbym, aby móc korzystać z wyszukiwania wstecznego URL w celu podłączenia się do uprzednio ustawionej np domenie:Django URL conf bez widoku - aby połączyć się z inną domeną

w szablonie:

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

jeżeli strona może siedzieć w http://www.mydomain.com/home a strona administrator może być http://admin.mydomain.com - lub w trybie dev, może to być http://devadmin.localhost

mogę ustawić domenę w ustawieniach za pomocą zmiennych środowiskowych - ale jak mogę uzyskać strukturę URL, aby umieścić tę domenę w szablonie strony?

Dwa proste drogi do osiągnięcia tego celu:

  1. Wystarczy utworzyć widok przekierowania, które mogą siedzieć w gdzieś jak /go/admin który będzie po prostu przekierować do cokolwiek domeny skonfigurować.

  2. Dołącz moją domenę w kontekście szablonu i przepisać href coś podobnego <a href="{{ ADMIN_SITE }}">

Obie opcje będą działać. Oba mają jednak wady: pierwszy dotyczy dodatkowego etapu przekierowania, a drugi nie używa tego samego znacznika url jako innych łączy.

+0

Musi to być bez widoku? [RedirectView] (https://docs.djangoproject.com/en/1.5/ref/class-based-views/flattened-index/#redirectview) –

Odpowiedz

2

Nie sądzę, że można/należy bezpośrednio dodawać zewnętrzne adresy URL do swojego urls.py. Ten plik dotyczy adresów URL, które muszą zostać rozwiązane z serwera django, więc jeśli strona znajduje się na innym serwerze ... i chcesz użyć {% url %}, musi to być przekierowanie.

chciałbym to zrobić:

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'), 
) 

Następnie {% url %} powinno działać jak zwykle:

{% url 'remote_admin' %}