python - 在我的 base.html 上显示用户图像 ({{ userprofile.image.url }})
问题描述
我希望你很好?我是 Django 的初学者。我正在为我的用户使用配置文件(女巫属于“用户”文件夹。我想在我的 base.html 上显示图像(女巫属于“Nutriscore”“模板”文件夹)。我该怎么做? {{ userprofile.image.url }} 仅适用于我的 update_profile.html 页面(女巫属于用户模板文件夹)。
MonProjetDjango
- Nutriscore——模板(base.html)——urls.py
- 用户——模板——views.py——models.py
用户>views.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)
用户 > 模型.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)
Nutriscore > urls.py
path('profile/<slug:slug>/', UserProfileUpdateView.as_view(), name="update_profile"),
我想在我的 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 %}
解决方案
由于您想获取发出请求的用户的图像,然后使用 user 关键字,因为对于每个发出请求的用户,django 会自动加载用户对象属性,因此使用它来获取 img
{{user.userprofile.image.url}}
推荐阅读
- finite-automata - ardens lemma 是否正确?
- firebase - 我应该使用服务器密钥还是旧服务器密钥通过 HTTP1.1 向 FCM Api 发送 Post 请求?
- jquery - Slidetoggle()-上下切换问题
- javascript - 如何自动滚动到文本中所需的单词
- java - Java/Swing:同时处理 GUI 和 CLI 输入
- vue.js - vuejs 计算的给定道具的设置器不是反应式的
- angular - Angular - 是否有任何集成 ADFS 的 Angular 5 包
- c - 如何使用每个函数确定数字是偶数还是奇数?
- shell - 在 shell 中尝试/排除循环
- python - Micro:bit 类而不是全局变量 - micropython 中的内存分配错误