كيفية الوصول إلى ملف تعريف المستخدم في جانغو القالب ؟
-
05-07-2019 - |
سؤال
أنا تخزين إضافية لكل مستخدم المعلومات باستخدام AUTH_PROFILE_MODULE
.
يمكننا الوصول إلى المستخدم في جانغو قالب باستخدام {{ request.user }}
ولكن كيف يمكننا الوصول إلى الحقول في الملف الشخصي منذ الشخصي فقط يمكن الوصول إليه من خلال وظيفة user.get_profile()
?
هل هو حقا المطلوبة صراحة تمرير الملف إلى قالب في كل مرة ؟
المحلول
استخدم {{ request.user.get_profile.whatever }}
. اللغة النموذجيه جانغو تدعو الأشياء التي هي للاستدعاء تلقائيا - في هذه الحالة، وطريقة .get_profile()
نصائح أخرى
ولست متأكدا لماذا الأمر مختلف بالنسبة لي، ولكن أنا بحاجة إلى استخدام {{مستخدم}} بدلا من {{request.user}}.
نعم من الممكن الوصول إلى الملف الشخصي من القالب باستخدام طلب.المستخدم.get_profile
ومع ذلك هناك هو صغير التحذير:ليس كل المستخدمين سوف يكون التشكيلات التي كانت في حالتي مع المشرف المستخدمين.لذلك يدعو مباشرة
{{ request.user.get_profile.whatever }}
من القالب سوف يسبب خطأ في مثل هذه الحالات.
إذا كنت متأكدا من أن جميع المستخدمين دائما لمحات أنها آمنة للاتصال من القالب ، وإلا الدعوة get_profile()
من خلال محاولة باستثناء كتلة في عرض ونقله إلى القالب.
إذا كنت تستخدم جانغو> 1.5 يمكنك لم تعد تستخدم get_profile
.
إذا كان لديك التطبيق تراث، يجب إزالة AUTH_PROFILE_MODULE = 'myapp.profile'
من settings.py
الخاص بك.
إذا كنت تستخدم models.OneToOneField(User)
في الملف الشخصي الخاص بك الطبقة، يمكنك ببساطة استخدام
{{ request.user.profile.whatever }}
وفي قالب جانغو بك
إذا كان ذلك يساعد أي شخص, أنا استخدم ما يلي في القالب:
اسم المستخدم: {{ user.username }}
المستخدم الاسم الكامل: {{ user.get_full_name }}
مجموعة المستخدم: {{ user.groups.all.0 }}
البريد الإلكتروني: {{ user.email }}
بدأت الدورة في: {{ user.last_login }}
عينة النتيجة هكذا:
المستخدم:المراجع إزيو
مجموعة المستخدم:auditGroup
اسم المستخدم:testUser03
البريد الإلكتروني:testuser03@auditor.com
الدورة بدأت في 16 أبريل / نيسان عام 2018 ، 9:38 مساء
شكرا :)
والعمل!
في نموذج ملفك الشخصي توفير related_name
user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)
وبعد ذلك في استخدام القالب. هنا COMPANY_NAME هو حقل في الجدول الشخصية
{{ request.user.user_profile.company_name }}