2009-07-06 13 views
6

Obecnie w moim module settings mam to:Django: Dynamiczne LOGIN_URL zmienna

LOGIN_URL = '/login' 

Jeśli kiedykolwiek zdecydujesz się zmienić adres URL logowania w urls.py, będę musiał go zmienić również tutaj. Czy jest jakiś bardziej dynamiczny sposób robienia tego?

Odpowiedz

7

Ustawienia IS gdzie ustawiasz dynamiczny adres URL logowania. Pamiętaj, aby zaimportować LOGIN_URL z settings.py w swoim urls.py i użyć go zamiast tego.

from projectname.settings import LOGIN_URL 
+0

Ale jak mogę zmieścić że w 'urlpatterns'? :/ –

+1

z django.conf.urls.defaults import * z projectname.settings importować LOGIN_URL urlpatterns = patterns ('', (r '^ articles/2003 /' + LOGIN_URL + '/ $', „wiadomości. views.special_case_2003 '), – AlbertoPL

4

Działa to dla mnie ... z LOGIN_URL = '/ kont/login'

Jeśli problem jest że settings.py ma ...

LOGIN_URL = '/login/' # <-- remember trailing slash! 

.. ., ale urls.py chce ...

url(r'^login/$', 
     auth_views.login, {'template_name': '/foo.html'}, 
      name='auth_login'), 

Wtedy to zrobić:

# - up top in the urls.py 
from django.conf import settings 

# - down below, in the list of URLs ... 
# - blindly remove the leading '/' & trust that you have a trailing '/' 
url(r'^%s$' % settings.LOGIN_URL[1:], 
     auth_views.login, {'template_name': '/foo.html'}, 
      name='auth_login'), 

Jeśli nie można zaufać komukolwiek edytuje swój settings.py ... następnie sprawdzić LOGIN_URL startswith ukośnik & ciach go, czy nie. ... a potem sprawdzić końcowy ukośnik LOGIN_URL endswith ukośnik & halsie go, czy nie ... a, a następnie przykleić na „$”

+3

lub LOGIN_URL.lstrip ('/') –

Powiązane problemy