मैं Django अजगर ढांचे का उपयोग कर एक वेबसाइट बना रहा हूँ और वर्तमान में एक समस्या पर फंस गया हूँ। मैं myaccount नामक पृष्ठ प्रदर्शित करने के लिए फ़ंक्शन दृश्यों का उपयोग कर रहा हूं, और 'myaccount' पर मैं सभी उपयोगकर्ता विवरण संदर्भ ऑब्जेक्ट्स का उपयोग करके प्रदर्शित करना चाहता हूं, इस पृष्ठ के लिए यह 'उपयोगकर्ता' है। मेरे पास प्रोफाइल नामक एक और मॉडल भी है, जिसमें प्रोफ़ाइल चित्र और उपयोगकर्ता की जन्म तिथि है। हालांकि जब मैं उस छवि को प्रदर्शित करने का प्रयास करता हूं जिसे खाता निर्माण के दौरान '/media/%y/%m/%d/imagename.filextension' नामक मीडिया फ़ोल्डर में अपलोड किया गया है, तो मुझे यह कहते हुए एक त्रुटि प्राप्त होती है कि "'प्रोफाइल पिक्चर' विशेषता है इससे जुड़ी कोई फाइल नहीं।" मैं इस मुद्दे को ठीक करने के लिए काफी खोज कर रहा हूं और अब तक कोई परिणाम नहीं मिला है जिसने काम किया है, मैंने एक संपत्ति फ़ंक्शन बनाने की कोशिश की है जिसे 'get_absolute_url' नामक छवि से यूआरएल मिलता है user.profile.profilePicture.get_absolute_url लेकिन यह काम करने में विफल रहता है और उसी त्रुटि को प्रदर्शित करता है। मैं सोच रहा था कि क्या कोई मुझे इस या समाधान के लिए एक फिक्स की दिशा में इंगित कर सकता है।

मैंने तकिया भी लगा रखा है।

छवि प्रदर्शित करने के लिए कोड, view.py और urls.py नीचे है

View.py

@login_required
def myaccount(request):
    return render(request, 'account/myaccount.html', {'section': 'myaccount'})

Urls.py

path('', views.myaccount, name='myaccount'),

Myaccount.html

<img src="{{ user.profile.profilepicture.url }}" width="260" height="234"/>

प्रोफाइल मॉडल

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    date_of_birth = models.DateField(blank =True, null =True)
    profilepicture = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)
    def __str__(self):
        return f'Profile for user {self.user.username}'

उपयोगकर्ता के लिए मॉडल 'django.contrib.auth.models' से है

यह पुष्टि करने के लिए कि क्या यह संदर्भ वस्तु के साथ एक समस्या थी, मैंने उपयोगकर्ताओं के पहले नाम को प्रदर्शित करने का प्रयास किया जो अपेक्षित रूप से काम करता था।

खाता रजिस्टर दृश्य

def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        if user_form.is_valid():
            # Create a new user object but avoid saving it yet
            new_user = user_form.save(commit=False)
            # Set the chosen password
            new_user.set_password(
                user_form.cleaned_data['password'])
            # Save the User object
            new_user.save()
            Profile.objects.create(user=new_user)
            # Create the user profile
            return render(request,
                          'account/register_done.html',
                          {'new_user': new_user})
    else:
        user_form = UserRegistrationForm()
    return render(request,
                  'account/register.html',
                  {'user_form': user_form})

अगर कोई अन्य कोड या जानकारी चाहिए तो कृपया पूछें।

0
Andrew Crossan 31 पद 2020, 02:52

2 जवाब

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

चूंकि आप ImageField का उपयोग कर रहे हैं, क्या आपने PIP इंस्टॉल पिलो का उपयोग करके पिलो लाइब्रेरी भी स्थापित की है?

0
Baby Yoda 31 पद 2020, 06:17

कुछ सामान्य ज्ञान का उपयोग करने के बाद मुझे एहसास हुआ कि मेरे पास वास्तव में प्रोफ़ाइल चित्र विशेषता के लिए एक फोटो अपलोड नहीं किया गया था जो समझाएगा कि इसके लिए कोई यूआरएल नहीं है ... वैसे भी मदद के लिए धन्यवाद और समय बर्बाद करने के लिए खेद है, मैंने भी यदि प्रोफ़ाइल के साथ कोई चित्र संबद्ध नहीं है, तो त्रुटि को चलने से रोकने के लिए if ब्लॉक का उपयोग किया जाता है।

1
Andrew Crossan 31 पद 2020, 21:18