Эта ошибка возникает, когда пользователь не является суперпользователем или не имеет изображения профиля (отправлено через userprofile в admin).

Ошибка ValueEr в / account / profile / Атрибут 'image' не имеет связанного с ним файла. Метод запроса: GET URL запроса: http://127.0.0.1:8000/accounts/profile/

Ошибка при рендеринге шаблона

In template /Users/joseph/Documents/django/tutorial/accounts/templates/base.html, error at line 17
The 'image' attribute has no file associated with it.
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

9     <meta charset="utf-8">
10    <html lang="en" dir="ltr">
11  
12  <!-- Navigation bar -->
13  
14    <br>
15    <nav class="navbar navbar-expand-lg navbar-green bg-light">
16    <a class="navbar-brand" href="/accounts/home">MySite</a>
17    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
18      <span class="navbar-toggler-icon"></span>
19    </button>
20        {% if user.is_authenticated %}
21    <div class="collapse navbar-collapse" id="navbarNav">
22      <ul class="nav navbar-nav ml-auto">
23        <li class="nav-item">
24          <a class="nav-link"   href="/accounts/explore/">Explore</a>
25        </li>
26        </ul>
27      <ul class="nav navbar-nav ml-auto">

Models.py :

class UserProfile(models.Model):
   user = models.OneToOneField(User, models.CASCADE)
   description = models.CharField(max_length=100, blank=True, default='')
   city = models.CharField(max_length=100, blank=True, default='')
   website = models.URLField(blank=True, default='')
   contactNumber = models.IntegerField(blank=True, default=0)
   image = models.ImageField(upload_to='profile_image', blank=True)

def __str__(self):
    return self.user.username

Почему это происходит? Это не может быть base.html (расширенный)? Если есть что-то еще, что нужно добавить, чтобы помочь решить проблему, пожалуйста, дайте мне знать. Спасибо

0
user10172799 27 Май 2019 в 21:31

2 ответа

Лучший ответ

Найдите строку (в файле шаблона, например, base.html), где вы рендерите изображение, и добавьте условие if. Что-то вроде:

{% if item.image %}
  <img target="_blank" src="{{ item.image.url }}" />
{% endif %}

Я думаю, это говорит само за себя, но не стесняйтесь спрашивать что-нибудь, если это необходимо.

0
slackmart 29 Май 2019 в 01:28

Вы можете добавить 'null = True' в ImageField (). Также проверьте, было ли изображение успешно загружено в админку. Если это так, попробуйте перезагрузить изображение и повторите попытку.

0
Oluwakayode A. 28 Май 2019 в 03:51