2013-12-09 6 views
8

Sto tentando di utilizzare il sistema dell'account di Django, incluso il decoratore @login_required. Il mio file settings.py include django.contrib.auth e ho eseguito un syncdb.Che altro devo fare per far funzionare il decoratore @login_required di Django?

Page not found (404) 
Request Method: GET 
Request URL: http://localhost:8000/accounts/login/?next=/ 
Using the URLconf defined in dashboard.urls, Django tried these URL patterns, in this order: 
^$ [name='home'] 
The current URL, accounts/login/, didn't match any of these. 
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page. 

Vedo quanto sopra dopo aver provato a @ login_required-decorare la mia vista di casa.

Sembra soffocare perché viene reindirizzato agli account/login /, che non ho preparato per il mio urls.py.

Cosa posso aggiungere a urls.py o altrove in modo che il decoratore login_required esegua il suo comportamento abituale?

Grazie,

risposta

15

Impostare la LOGIN_URL nelle impostazioni. Il valore predefinito è '/accounts/login/'

Il decoratore prende anche una login_url argomento opzionale:

@login_required(login_url='/accounts/login/') 

E, dal docs:

Si noti che se non si specifica il parametro login_url, è Avrai bisogno di assicurarti che le impostazioni.LOGIN_URL e la tua vista di login siano correttamente associate a . Ad esempio, utilizzando le impostazioni predefinite, aggiungere la seguente riga al vostro URLconf:

(r'^accounts/login/$', 'django.contrib.auth.views.login'), 
+0

Grazie; Ho aggiunto (cosa non impostato prima) un valore di '/ accounts/login /'. Il comportamento è lo stesso. – JonathanHayward

+0

@JonathanHayward Vedere la risposta aggiornata – keyser

+0

@KEYSER, grazie; Ora sto ricevendo "TemplateDoesNotExist in/accounts/login /"; sta cercando "registration/login.html". Devo aggiungere qualcosa al mio percorso? – JonathanHayward