Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在my base.html上显示用户图像({{userprofile.image.url}})_Python_Django - Fatal编程技术网

Python 在my base.html上显示用户图像({{userprofile.image.url}})

Python 在my base.html上显示用户图像({{userprofile.image.url}}),python,django,Python,Django,我希望你很好?我是Django的初学者。我正在为我的用户使用一个配置文件(它属于“用户”文件夹。我想在我的base.html(它属于“Nutriscore”“templates”文件夹)上显示该图像。我如何做到这一点?{{userprofile.image.url}}仅在我的update_profile.html页面上有效(它属于“用户模板”文件夹) 蒙普罗杰德扬戈 纽特里斯科 --模板(base.html) --url.py 使用者 --模板 --views.py --models.py

我希望你很好?我是Django的初学者。我正在为我的用户使用一个配置文件(它属于“用户”文件夹。我想在我的base.html(它属于“Nutriscore”“templates”文件夹)上显示该图像。我如何做到这一点?{{userprofile.image.url}}仅在我的update_profile.html页面上有效(它属于“用户模板”文件夹)

蒙普罗杰德扬戈

  • 纽特里斯科 --模板(base.html) --url.py
  • 使用者 --模板 --views.py --models.py
用户>视图.py

@method_decorator(login_required(login_url='login/'),name="dispatch")
class UserProfileUpdateView(UpdateView):
    model = UserProfile
    template_name = 'profile-update.html'
    form_class = UserProfileForm
    success_message = "Profile updated"


    def form_valid(self, form):
        form.instance.user = self.request.user
        form.save()
        return super(UserProfileUpdateView, self).form_valid(form)

    def get_success_url(self):
        return reverse('update_profile',kwargs={'slug':self.object.slug})
    
    def get(self,request,*args,**kwargs):
        self.object = self.get_object()
        if self.object.user != request.user:
            return HttpResponseRedirect('/')
        
        return super(UserProfileUpdateView, self).get(request,*args,**kwargs)
用户>models.py

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    street = models.CharField(null=True,blank=True,max_length=300)
    number_street = models.CharField(null=True,blank=True,max_length=20)
    street_detail = models.CharField(null=True,blank=True,max_length=300)
    town = models.CharField(null=True,blank=True,max_length=60)
    zipcode = models.CharField(null=True,blank=True,max_length=20)
    country = models.CharField(null=True,blank=True,max_length=60)
    image = models.ImageField(null=True,blank=True,default='user/user-128.png', upload_to='user/')
    slug = models.SlugField(editable=False)
    
    def save(self, *args,**kwargs):
        self.slug = slugify(self.user.username)
        super(UserProfile, self).save(*args, **kwargs)
        
        img = Image.open(self.image.path)
        if img.height > 200 or img.width > 200:
            new_size = (200, 200)
            img.thumbnail(new_size)
            img.save(self.image.path)
            
    def __str__(self):
        return self.user.username
        
def create_user_profile(sender,instance,created,**kwargs):
    if created:
        UserProfile.objects.create(user=instance)
        
post_save.connect(create_user_profile,sender=settings.AUTH_USER_MODEL)
Nutricore>url.py

path('profile/<slug:slug>/', UserProfileUpdateView.as_view(), name="update_profile"),
path('profile/',UserProfileUpdateView.as_view(),name=“update_profile”),
我想在my base.html中显示这个

{% if user.is_authenticated %} <a href="/profile/{{ user.username }}" class="button-login">{{ userprofile.image.url }} Hello {{ user.username }}</a> {% else %} <a href="/login/" class="button-login">Login</a> {% endif %}
{%if user.is_authenticated%}{%else%}{%endif%}

因为您希望获取发出请求的用户的图像,然后使用user关键字,因为对于发出请求的每个用户,django都会自动加载用户对象属性,所以使用它来获取img

  {{user.userprofile.image.url}}

你的base.html文件在哪里,显示它,为什么你希望你的用户配置文件图像显示在base.htmltanks中作为你的答案:)My base.html在Nutricore文件夹(templates文件夹)中。因为我想展示以下内容:{%if user.is_authenticated%}{%else%}“class=”button login“>login{%endif%}只需使用,这里的用户指发出http请求的用户