मैं वैग्टेल सीएमएस का उपयोग करके एक ब्लॉग साइट बना रहा हूं। जब भी कोई नई पोस्ट प्रकाशित होती है, तो मैं लेखक अवतार छवि प्रदर्शित करना चाहता हूं। मैं इस /admin/account/change_avatar/ स्थान से छवि प्रस्तुत करने का प्रयास कर रहा हूं। मैं देख सकता हूं कि यहां अपलोड की गई छवि wagtailusers_userprofile -> col name: avatar तालिका के अंतर्गत है, लेकिन यह सुनिश्चित नहीं है कि इसे टेम्पलेट में कैसे प्रस्तुत किया जाए।

4
rameshrasaiyan 2 मार्च 2019, 01:12

1 उत्तर

सबसे बढ़िया उत्तर

यह छवि एक सामान्य वैगटेल छवि नहीं है (वह जो wagtailimages.Image से आती है), यह एक नियमित models.ImageField की तरह दिखती है।

यहाँ अवतार के लिए UserProfile मॉडल में क्या है:

class UserProfile(models.Model):

    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='wagtail_userprofile'
    )

    avatar = models.ImageField(
        verbose_name=_('profile picture'),
        upload_to=upload_avatar_to,
        blank=True,
    )

चूंकि यह एक नियमित छवि फ़ील्ड है, आप अपने टेम्प्लेट में .url जोड़कर url प्राप्त कर सकते हैं।

यहाँ कुछ उदाहरण टेम्पलेट कोड है:

{% if request.user.is_authenticated %}
  {% if request.user.wagtail_userprofile.avatar %}
    <img src="{{ request.user.wagtail_userprofile.avatar.url }}" alt="{{ request.user.get_full_name }}">
  {% else %}
    {# No image #}
  {% endif %}
{% endif %}

उपरोक्त कोड यह देखने के लिए जांच करेगा कि उपयोगकर्ता टेम्पलेट में प्रमाणित है या नहीं। यदि आपको इसकी आवश्यकता नहीं है, तो इसे आज़माएं।

फिर request.user.wagtail_userprofile.avatar की जांच के लिए if स्टेटमेंट मौजूद है। wagtail_userprofile user फ़ील्ड से UserProfile मॉडल पर आता है। यह related_name का उपयोग कर रहा है, इसलिए हम इसे टेम्प्लेट में उपयोग करते हैं।

मैंने alt टैग के लिए {{ request.user.get_full_name }} में भी छिड़काव किया, क्योंकि इस मामले में छवि alt शायद फ़ाइल नाम के बजाय उपयोगकर्ता नाम होना चाहिए।

यदि आपको ऊंचाई या चौड़ाई की आवश्यकता है, तो वे दोनों {{ request.user.wagtail_userprofile.avatar.height }} और {{ request.user.wagtail_userprofile.avatar.width }} के माध्यम से उपलब्ध हैं।

6
Kalob Taulien 2 मार्च 2019, 02:17