Python 在post中显示图像';与用户的第一个字母';她叫什么名字?
在我的博客应用程序中,我想在帖子的详细信息中显示一个图像。但棘手的是,我想显示与用户名字的第一个字母对应的图像。例如,如果用户名是“Sam”,我想显示字母“s”的图像。我尝试在静态文件夹中添加所有字母“化身”。我尝试了Python 在post中显示图像';与用户的第一个字母';她叫什么名字?,python,django,Python,Django,在我的博客应用程序中,我想在帖子的详细信息中显示一个图像。但棘手的是,我想显示与用户名字的第一个字母对应的图像。例如,如果用户名是“Sam”,我想显示字母“s”的图像。我尝试在静态文件夹中添加所有字母“化身”。我尝试了 <!--code for displaying image from database---> {% if post.author.profile.image.url is None %} <img src="{% static 'images/
<!--code for displaying image from database--->
{% if post.author.profile.image.url is None %}
<img src="{% static 'images/{{letter}}.png' %}" class='logo3'/>
{% else %}
<img src="{{ post.author.profile.image.url }}" class='logo3'/>
{% endif %}
views.py
def homepage(request):
l=[]
post= Post.objects.all().order_by('-date')
ctr= post.count()
print(ctr)
for i in range(0,ctr):
letter = post[i].author_id[0].lower()
l.append(letter)
return render(request,'layout.html',{'posts':post,'letter':l})
models.py
class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey(settings.AUTH_USER_MODEL,
to_field="username",on_delete=models.CASCADE)
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
image = models.ImageField(default=None,upload_to='pics')
{%如果post.author.profile.image.url为None%}
{%else%}
{%endif%}
views.py
def主页(请求):
l=[]
post=post.objects.all().order_by('-date')
ctr=post.count()
打印(ctr)
对于范围内的i(0,ctr):
letter=post[i]。作者id[0]。lower()
l、 附加(信)
返回呈现(请求,'layout.html',{'posts':post,'letter':l})
models.py
班级职务(models.Model):
title=models.CharField(最大长度=100)
desc=models.TextField()
日期=型号。日期时间字段(自动_now=True)
author=models.ForeignKey(settings.AUTH\u USER\u MODEL,
至_field=“username”,在_delete=models.CASCADE上)
类配置文件(models.Model):
user=models.OneToOneField(用户,on_delete=models.CASCADE)
image=models.ImageField(默认值=None,上传到='pics')
在我的浏览器中,如果我单击inspect In img标记,src显示为/media/None您正在通过post.author对象访问author,因此只需在模板中执行
post.author.username.0
,您不需要上下文中的字母列表name[0]
编辑:设置为
username
字段,可选的是first\u name
和last\u name
根据用户的名字显示图像的最简单方法是创建div
,而不是圆角图像
{% if post.author.profile.image %}
<img src="{{ post.author.profile.image.url }}" class='logo3'/>
{% else %}
<div class="text-center align-center" style="align-items:center !important;justify-content:center !important;background-color: black;width: 50px;height: 50px;border-radius: 50px">
<p style="padding-top: 25%" >{{ post.author.username.0 }}</p>
</div>
{% endif %}
{%if post.author.profile.image%}
{%else%}
{{post.author.username.0}
{%endif%}
{{post.author.username.0}}将为您提供用户名的第一个字母
你能分享
Author
模型吗?我在我的问题{%if post.Author.profile.image.url为None%}{%else%}{%endif%}中添加了我的models.py,这是正确的吗?它是一个ORM,对象关系映射程序,所以你只需通过post.Author.username来访问用户名值。post.author_id是这种关系的数据库表示形式。另外,我编辑了我的文章,因为auth user没有名字字段。我无法在浏览器中的图像标签下加载图像,它显示/media/NoneI在静态文件夹中添加了所有字母avatar。如果用户没有设置配置文件图片,我将尝试加载该avatar。如果用户没有设置配置文件图片,我在我的模型中将字段值设置为None。有什么办法吗要执行此操作,不需要将所有图像保存在静态文件夹中。这个问题有简单的解决办法。如果你想继续你的计划。尝试在settings.py文件中添加静态文件路径和目录..官方文档:-