Ich speichere einige zusätzliche Informationen pro Benutzer mithilfe von AUTH_PROFILE_MODULE
.
Wir können in einer Django-Vorlage auf den Benutzer zugreifen, {{ request.user }}
aber wie greifen wir auf Felder im Profil zu, da auf das Profil nur über eine Funktion user.get_profile()
zugegriffen werden kann ?
Ist es wirklich erforderlich, das Profil jedes Mal explizit an die Vorlage zu übergeben?
python
django
django-templates
Swaroop CH
quelle
quelle
Ich bin mir nicht sicher, warum es bei mir anders ist, aber ich muss {{user}} anstelle von {{request.user}} verwenden.
quelle
django.template.context_processors.request
Einfügung derrequest
In-Vorlage und diedjango.contrib.auth.context_processors.auth
Einfügungenuser
im Kontext. docs.djangoproject.com/de/1.10/ref/templates/api/…Ja, es ist möglich, über die Vorlage mit request.user.get_profile auf das Profil zuzugreifen
Es gibt jedoch eine kleine Einschränkung : Nicht alle Benutzer haben Profile, was in meinem Fall bei Administratoren der Fall war. Ein direkter Aufruf direkt
{{ request.user.get_profile.whatever }}
von der Vorlage führt in solchen Fällen zu einem Fehler.Wenn Sie sicher sind, dass alle Benutzer immer Profile haben, können Sie sicher von der Vorlage aus aufrufen. Andernfalls rufen Sie
get_profile()
in Ihrer Ansicht aus dem try-Except-Block auf und übergeben Sie ihn an die Vorlage.quelle
{{ request.user.get_profile.whatever }}
, werde aber{{ request.user.get_profile }}
funktionieren und kann verwendet werden, um zu überprüfen, ob in aktuellen Versionen ein Profil vorhanden ist oder nicht. Siehe docs.djangoproject.com/de/dev/ref/templates/api/… . Es gibt einen Hinweis, dass sich dies in der Entwicklungsversion ändern wird. Siehe jedoch den Absatz über dem, auf den ich verlinkt habe.Wenn Sie Django> 1.5 verwenden, können Sie es nicht mehr verwenden
get_profile
.Wenn Sie eine Legacy-App haben, sollten Sie diese
AUTH_PROFILE_MODULE = 'myapp.profile'
aus Ihrer entfernensettings.py
.Wenn Sie
models.OneToOneField(User)
in Ihrer Profilklasse verwenden, können Sie einfach verwendenin Ihrer Django-Vorlage
quelle
request
Tastatur vorne nicht mehr ?Wenn es jemandem hilft, habe ich Folgendes in meiner Vorlage verwendet:
Nutzername:
{{ user.username }}
Benutzer Vollständiger Name:
{{ user.get_full_name }}
Benutzergruppe:
{{ user.groups.all.0 }}
Email:
{{ user.email }}
Sitzung begann um:
{{ user.last_login }}
Ein Beispielergebnis sieht folgendermaßen aus:
Vielen Dank :)
quelle
Arbeiten !
Geben Sie in Ihrem Profilmodell den verwandten Namen an
Dann in Vorlage verwenden. Hier ist Firmenname ein Feld in der Profiltabelle
quelle