2013-08-24 14 views
6

Od Django 1.5 można ustawić LOGIN_URL na nazwę funkcji widoku, ale nie byłem w stanie wymyślić, jak określić ją poprawnie.Jak ustawić settings.LOGIN_URL na nazwę funkcji widoku w Django 1.5+

LOGIN_URL = my_app.views.sign_in 

... nie działa. I pojawia się błąd,

ImproperlyConfigured: The SECRET_KEY setting must not be empty. 
+0

trzeba dać niepusty wartość 'set Zmienna tings.SECRET_KEY', na przykład 'SECRET_KEY = '1234567890''. To właśnie mówi ci wyjątek. –

+0

Błąd SECRET_KEY został spowodowany przez problematyczną instrukcję importu. – Seth

Odpowiedz

13

Django oblicza tej url w django.contrib.auth.views: funkcja redirect_to_login jak:

resolved_url = resolve_url(login_url or settings.LOGIN_URL) 

dlatego należy go ustawić jako wyrażenie:

LOGIN_URL = 'my_app.views.sign_in' 

Również w settings.py można użyć funkcji reverse_lazy:

from django.core.urlresolvers import reverse_lazy 
LOGIN_URL = reverse_lazy('my_app.views.sign_in') 

https://docs.djangoproject.com/en/1.5/ref/urlresolvers/#reverse-lazy

+0

To zadziała, ale nie skorzysta z nowej funkcji w wersji 1.5, prawda? – Seth

+0

Hmm ... tak, zaktualizowałem odpowiedź. Sprawdź ustawienia.SRERET_KEY nie jest pusty. – kubus

+0

Z jakiegoś powodu za pierwszym razem wypróbowałem to rozwiązanie, po prostu umieściłem my_app.views.sign_in na adresie URL. Ale po powrocie i ponownej próbie działa teraz dobrze. Błąd SECRET_KEY został spowodowany przez instrukcję importującą, która powoduje pewne problemy z kręgami. – Seth

1

Jeśli nie chcesz połączyć LOGIN_URL do „widzenia” (można zmienić na inny), a następnie można połączyć namded URL w settings.py:

from django.core.urlresolvers import reverse_lazy 
LOGIN_URL = reverse_lazy('login') 

gdzie są „login” coś typu:

url(r'^accounts/login/$', 'my_app.view.Login', name='login'), 

i tak, jeśli zmienić widok na inny, nie trzeba robić zmiany w settings.py