Python 在post中显示图像';与用户的第一个字母';她叫什么名字?

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/

在我的博客应用程序中,我想在帖子的详细信息中显示一个图像。但棘手的是,我想显示与用户名字的第一个字母对应的图像。例如,如果用户名是“Sam”,我想显示字母“s”的图像。我尝试在静态文件夹中添加所有字母“化身”。我尝试了

 <!--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对应于Python中的
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文件中添加静态文件路径和目录..官方文档:-