In Django, come faccio a sapere l'utente attualmente connesso?In Django, come faccio a sapere l'utente attualmente loggato?
risposta
Dove è necessario conoscere l'utente?
In views l'utente viene fornito nella richiesta come request.user
.
Per l'utente di gestione in modelli vedono here
Se si desidera salvare il creatore o editore di esempio un modello di si può fare qualcosa di simile:
model.py
class Article(models.Model):
created_by = models.ForeignKey(User, related_name='created_by')
created_on = models.DateTimeField(auto_now_add = True)
edited_by = models.ForeignKey(User, related_name='edited_by')
edited_on = models.DateTimeField(auto_now = True)
published = models.BooleanField(default=None)
admin.py
class ArticleAdmin(admin.ModelAdmin):
fields= ('title','slug','text','category','published')
inlines = [ImagesInline]
def save_model(self, request, obj, form, change):
instance = form.save(commit=False)
if not hasattr(instance,'created_by'):
instance.created_by = request.user
instance.edited_by = request.user
instance.save()
form.save_m2m()
return instance
def save_formset(self, request, form, formset, change):
def set_user(instance):
if not instance.created_by:
instance.created_by = request.user
instance.edited_by = request.user
instance.save()
if formset.model == Article:
instances = formset.save(commit=False)
map(set_user, instances)
formset.save_m2m()
return instances
else:
return formset.save()
ho trovato questo su internet, ma non so dove più
Solo una nota, in save_formset -> set_user, dovrebbe essere se non hasattr (istanza, 'created_by') – FurtiveFelon
posso ottenere l'utente corrente in settings.py? – Mahendra
Perché dovresti farlo? (Si prega di creare una nuova domanda, i miei giorni sono ormai lontani Django) – vikingosegundo
Estendere la risposta di @ vikingosegundo, se si desidera ottenere il nome utente all'interno Models, ho trovato un modo che coinvolge dichiarando un middleware. Creare un file chiamato get_username.py
all'interno della vostra applicazione, con questo contenuto:
from threading import current_thread
_requests = {}
def get_username():
t = current_thread()
if t not in _requests:
return None
return _requests[t]
class RequestMiddleware(object):
def process_request(self, request):
_requests[current_thread()] = request
Modificare il settings.py
e aggiungerlo alla MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = (
...
'yourapp.get_username.RequestMiddleware',
)
Ora, nel metodo save()
, è possibile ottenere il nome utente corrente in questo modo:
from get_username import get_username
...
def save(self, *args, **kwargs):
req = get_username()
print "Your username is: %s" % (req.user)
thread dedicato: http://stackoverflow.com/questions/10991460/django-get-current-user-in-model-save –
@nKn è la realtà dedicata MiddleWare è necessario invocare 'get_username()' nell'oggetto 'Models'? Se è così, sarebbe bello avere un link a un documento canonico su questo. Ci sono funzioni native di django aggiornate in 1.9.5 per fare lo stesso? – alvas
Django 1.9.6 progetto di default ha user
nei modelli predefiniti
modo da poter scrivere le cose in questo modo direttamente:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
Questa funzionalità è fornita dal processore django.contrib.auth.context_processors.auth
contesto in settings.py
.
Dedicato domanda modello: How to access the user profile in a Django template?
- 1. In SQL Server, come faccio a sapere quale modalità di transazione sto utilizzando attualmente?
- 2. Come posso ottenere il nome utente dell'utente loggato in Django?
- 3. Trova l'utente attualmente connesso in Django
- 4. Includi utente loggato django in django Errore Traceback
- 5. Come faccio a fare riferimento al mio computer locale per scp'ing quando loggato in remoto?
- 6. Come faccio a sapere se sono nel debugger sotto Android?
- 7. Come faccio a sapere se MotionEvent è relativo o assoluto?
- 8. Come faccio a sapere quale nodo è focalizzato in JavaFX?
- 9. Come faccio a sapere quando un'immagine è caricata in Picturebox
- 10. Come faccio a sapere dove trascorre il tempo il compilatore?
- 11. Come faccio a sapere se il mio server ha NUMA?
- 12. Come faccio a sapere se una tabella è una matrice?
- 13. Come faccio a sapere se due variabili sono approssimativamente uguali?
- 14. Come faccio a sapere quale gemma ha una dipendenza specifica?
- 15. Come faccio a sapere quando un'espressione lambda è nullo
- 16. Come faccio a sapere se questo è abbastanza casuale?
- 17. Come faccio a sapere quale versione di OpenGL sto usando?
- 18. Come faccio a sapere il mio sistema disponibile Gradle buildToolsVersion
- 19. Come faccio a sapere quale porta seriale usare su Linux?
- 20. Come faccio a sapere se posso disabilitare SQLALCHEMY_TRACK_MODIFICAZIONI?
- 21. Che cos'è l'AppDelegate e come faccio a sapere quando utilizzarlo?
- 22. jquery: come faccio a sapere se ce l'ho?
- 23. Come faccio a sapere chi ha chiamato SendMessage?
- 24. Come faccio a sapere dove vivono gli script di accesso?
- 25. Come faccio a sapere quali connettori Eclipse M2E ho installato?
- 26. Come faccio a sapere che removeEventListener ha avuto successo?
- 27. UITableView, come faccio a sapere quale sezione durante cellForRowAtIndexPath?
- 28. node.js callback async.each, come faccio a sapere quando è finito?
- 29. Come faccio a sapere quale versione di servlet-api.jar ho?
- 30. Come faccio a sapere se un appuntamento è privato
duplicato della tua domanda precedente? http://stackoverflow.com/questions/1476596/login-code-for-django – Abizern
@Abizem, no, questo non è un duplicato di questa domanda. –