Отобразить изображение в деталях поста, соответствующее первой букве имени пользователя? - PullRequest
0 голосов
/ 29 июня 2019

В своем приложении блога я хочу отобразить изображение в деталях поста.Но самое сложное в том, что я хочу отобразить изображение, соответствующее первой букве имени пользователя.Например, если имя пользователя «Сэм», я хочу отобразить букву «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')

В моем браузере, если я нажму на inspect в теге img, src будет отображаться как / media / None

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Самый простой способ отобразить изображения в соответствии с именем пользователя - это создать 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 %}

{{post.author.username.0}} даст вам первую букву имени пользователя

0 голосов
/ 29 июня 2019

Вы обращаетесь к автору по объекту post.author, поэтому просто введите post.author.username.0 в своем шаблоне, вам не нужен этот список букв в контексте. name.0 в шаблонах Django соответствует name[0] в Python.

Редактировать: установить в username поле, альтернативы first_name и last_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...