2010-02-07 11 views
11

Ho creato un elenco di 5 utenti. Come faccio a sapere quale utente ha effettuato l'accesso al momento? Inoltre, si prega di citare, se c'è un modo per scoprire se il super-utente ha effettuato l'accesso?Trova l'utente attualmente connesso in Django

Il mio requisito è, voglio limitare l'accesso di determinate pagine nei modelli solo al superutente.

risposta

16

utente attuale è in richiesta di oggetto:

def my_view(request): 
    current_user = request.user 

E 'classe django.contrib.auth.models.User e ha alcuni campi, per esempio

  • is_staff - Booleano. Indica se questo utente può accedere al sito admin;
  • is_superuser - Boolean. Designa che questo utente ha tutte le autorizzazioni senza assegnarle esplicitamente.

http://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.models.User

Quindi, per verificare se l'utente corrente è superutente è possibile:

if user.is_active and user.is_superuser: 
    ... 

Si può usare in modello o passare questo a modello come variabile di via contesto.

+0

Ottimo. Ha funzionato . Molte grazie ! U rock !! –

3

Suoni come si dovrebbe usare il built-in permissions system per questo.

+0

fa Django memorizzare il nome del utente attualmente connesso in qualche attributo, in modo che potessi concedere l'accesso alle mie pagine sulla base di tale (io sono nuovo di Django) –

+1

utente è memorizzato in 'request.user'. Da lì si tratta solo di accedere agli attributi sul modello 'Utente'. –

+0

questo è quello che stavo cercando !! molte grazie . –

0

Controlla il decoratore user_passes_test per le tue opinioni. frammenti di Django ha un decoratore correlato:

Questi decoratori si basano su user_passes_test e permission_required, ma quando un utente è collegato e non supera il test, si renderà un errore di 403 invece di reindirizzare il login - Solo gli anonimi utenti saranno invitati ad accedere.

http://www.djangosnippets.org/snippets/254/

Problemi correlati