Dans Django, comment puis-je connaître l'utilisateur actuellement connecté?Dans Django, comment puis-je connaître l'utilisateur actuellement connecté?
Répondre
Où avez-vous besoin de savoir l'utilisateur?
Dans views l'utilisateur est fourni dans la demande en tant que request.user
.
Pour de traitement utilisateur dans modèles voir here
Si vous souhaitez enregistrer le créateur ou l'éditeur d'une l'instance de modèle vous pouvez faire quelque chose comme:
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()
Je trouve cela sur Internet, mais je ne sais pas où plus
Juste une note, dans save_formset -> set_user, il devrait être sinon hasattr (instance, 'created_by') – FurtiveFelon
Puis-je obtenir l'utilisateur actuel dans settings.py? – Mahendra
Pourquoi le feriez-vous? (s'il vous plaît créer une nouvelle question, mes jours django sont partis depuis longtemps) – vikingosegundo
L'extension de la réponse de @ vikingosegundo, si vous voulez obtenir le nom d'utilisateur à l'intérieur de modèles, j'ai trouvé un moyen qui consiste à déclarer un intergiciel. Créez un fichier appelé get_username.py
dans votre application, avec ce contenu:
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
Modifier votre settings.py
et l'ajouter à la MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = (
...
'yourapp.get_username.RequestMiddleware',
)
Maintenant, dans votre méthode save()
, vous pouvez obtenir le nom d'utilisateur comme ceci:
from get_username import get_username
...
def save(self, *args, **kwargs):
req = get_username()
print "Your username is: %s" % (req.user)
Fil dédié: http://stackoverflow.com/questions/10991460/django-get-current-user-in-model-save –
@nKn est vraiment dédié MiddleWare nécessaire pour appeler 'get_username()' dans l'objet 'Models'? Si c'est le cas, il serait bon d'avoir un lien vers un document canonique à ce sujet. Y a-t-il des fonctions django natives mises à jour en 1.9.5 pour faire la même chose? – alvas
projet par défaut Django 1.9.6 a user
dans les modèles par défaut
Vous pouvez donc écrire des choses comme ça directement:
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Not logged in.
{% endif %}
Cette fonctionnalité est fournie par le processeur de contexte django.contrib.auth.context_processors.auth
dans settings.py
.
dédié question du modèle: How to access the user profile in a Django template?
- 1. Django Modèle: Nom d'utilisateur de retour de l'utilisateur actuellement connecté
- 2. Comment obtenir le rôle de l'utilisateur actuellement connecté dans wordpress?
- 3. Comment vérifier si un Socket est actuellement connecté en Java?
- 4. Comment obtenir la liste des rôles pour l'utilisateur actuellement connecté
- 5. Comment vérifier si l'utilisateur actuellement connecté utilise un profil itinérant?
- 6. Récupère l'utilisateur du système d'exploitation actuellement connecté dans Adobe Air
- 7. Récupère l'identité de l'utilisateur actuellement connecté, pas du compte système
- 8. Trouver l'utilisateur actuellement connecté à partir d'une extension Firefox
- 9. Comment puis-je obtenir l'utilisateur Windows actuellement connecté dans Access VBA?
- 10. Comment enregistrer le nom de l'utilisateur connecté?
- 11. Gestion de différentes bases de données avec LINQ en fonction de l'utilisateur actuellement connecté?
- 12. Comment remplir automatiquement les champs dans django?
- 13. Lift: comment récupérer l'utilisateur connecté?
- 14. Déterminer si l'utilisateur est connecté
- 15. Comment identifier les réseaux sans fil actuellement disponibles avec Python dans Windows?
- 16. Comment traverser Request.Form sans connaître les détails?
- 17. Comment connaître les classements disponibles dans SQL 2000/2005
- 18. Comment connaître la taille des rappels dans ASP.NET AJAX?
- 19. Comment connaître les informations sur les images dans l'application wpf
- 20. (QT/kdelib) comment connaître la fin d'une commande dans KTerminalInterface?
- 21. Comment connaître la disponibilité du type de données dans Postgres
- 22. Comment savoir qui est connecté à SQL Server
- 23. Comment obtenir le nom d'utilisateur connecté dans Access vba?
- 24. Comment savoir qui est connecté à l'application dans WPF?
- 25. Comment utiliser le template change_form.html dans django?
- 26. Comment connaître la position ordinale d'un ItemTemplate
- 27. Comment expirer un utilisateur ASP.NET MVC connecté?
- 28. Comment utiliser CommaSeparatedIntegerField dans django?
- 29. Est-il possible pour une application django de connaître le nom de domaine windows de l'utilisateur?
en double de votre question précédente? http://stackoverflow.com/questions/1476596/login-code-for-django – Abizern
@Abizem, non ce n'est pas un doublon de cette question du tout. –