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