Mar*_*chi 0 python django django-templates django-models django-views
嗨 Djangonauts,今天大家好吗,我是 Django 的新手,所以请原谅逻辑或代码中的任何愚蠢错误。我有一个用户、一个 User_Profile 和一个帖子模型。我想为用户发布的帖子数量提供用户徽章。例如,如果用户发布 3 个帖子,他/她将获得初学者徽章等等......
以下是我的用户个人资料models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(default='', blank=True, null=True)
badge_image = models.ImageField(default='', blank=True, null=True)#maybe default can be "static/images/beginner_image.jpg" but it does not work
Run Code Online (Sandbox Code Playgroud)
帖子模型.py
User = get_user_model()
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(allow_unicode=True, unique=True)
message = models.TextField()
Run Code Online (Sandbox Code Playgroud)
现在我想实现这样的目标:
user = User.objects.get(username=request.user.username)
if user.posts.count >= 3 :
badge_image = '<img src="some image">'# I don't know how to make a image variable in views and models. I know how to use it in Django templates with {{image.url}}
elif user.posts.count >= 20 :
badge_image = '<img src="some image">'
else:
badge_image ='<img src="beginner_image">'
Run Code Online (Sandbox Code Playgroud)
我应该在模型和视图中的何处编写此代码?如果我的问题太基本,我很抱歉。我学到的所有项目都没有类似的场景
你可以不用ImageField. @property为此使用模型。您需要使用静态文件将徽章图像(例如badge_img1.jpg、badge_img2.jpg等)复制到导演(查看文档如何使用 Django 管理静态)。Profile像这样重写:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(default='', blank=True, null=True)
@property
def badge_image(self):
if self.user.posts.count() >= 20:
badge_image = 'badge_img1.jpg'# I don't know how to make a image variable in views and models. I know how to use it in Django templates with {{image.url}}
elif self.user.posts.count() >= 3:
badge_image = 'badge_img2.jpg'
else:
badge_image ='badge_img3.jpg'
return badge_image
Run Code Online (Sandbox Code Playgroud)
您可以像这样显示当前用户的图像:
{% load static %}
<img src={% static user.profile.badge_image %}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |