2009-07-06 8 views
6

Actuellement, dans mon module settings J'ai ceci:Django: variable dynamique LOGIN_URL

LOGIN_URL = '/login' 

Si jamais je décide de changer l'URL de connexion à urls.py, je vais devoir changer ici. Y a-t-il un moyen plus dynamique de le faire?

Répondre

7

Paramètres IS où vous définissez votre URL de connexion dynamique. Assurez-vous d'importer LOGIN_URL de settings.py dans votre urls.py et utilisez-le à la place.

from projectname.settings import LOGIN_URL 
+0

Mais comment puis-je dans 'ajustement qui urlpatterns'? :/ –

+1

de django.conf.urls.defaults import * de projectname.settings importer login_url urlpatterns = patterns ('', (r '^ articles/2003 /' + LOGIN_URL + '/ $', « nouvelles. views.special_case_2003 '), – AlbertoPL

4

Cela fonctionne pour moi ... avec LOGIN_URL = '/ comptes/login'

Si le problème est que settings.py a ...

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

.. . mais, urls.py veut ...

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

faites ceci:

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

Si vous ne pouvez pas faire confiance à quiconque édite votre settings.py ... puis vérifiez LOGIN_URL startswith une barre oblique & snip tout, ou non. ... et puis de vérifier slash LOGIN_URL endswith une barre oblique & amure sur, ou non ... et puis virer de bord sur le « $ »

+3

ou LOGIN_URL.lstrip ('/') –

Questions connexes