использовать изображение в формате HTML из базы данных, используя Django - PullRequest
1 голос
/ 28 октября 2019

, когда я пытаюсь отобразить изображение из моей базы данных в HTML, оно не будет отображаться, но все остальные данные отображаются! так в чем же ошибка?

мой код

модель:

class Homepage(models.Model):
name = models.CharField(max_length=50,default="")
app_contect = models.CharField(max_length=240,default="")
page_url = models.URLField(max_length=250,default="")
app_image = models.ImageField(upload_to='images/',null=True, blank=True)
def __str__(self):
    return self.name

views.py:

def home_page(request):
app = Homepage.objects.all()
page = request.GET.get('the_home_page', 1) # the_home_page is the name of pages when user go to page 2 etc
paginator = Paginator(app, 6) # 6 that's mean it will show 6 apps in page
try:
    appnum = paginator.page(page)
except PageNotAnInteger:
    appnum = paginator.page(1)
except EmptyPage:
    appnum = paginator.page(paginator.num_pages)

return render(request,'html_file/enterface.html', { 'appnum': appnum })

HTML-файл:

{% for home_page in appnum %}

<label id="label_main_app"> <img id="img_main_app_first_screen" src="{{ home_page.app_image }}" alt="no image found !" height="160" width="165" > {{ home_page.name }} <br><br> <p id="p_size_first_page"> {{ home_page.app_contect}} <br> <br> <a href=" {{ home_page.page_url }} " type="button" class="btn btn-primary"><big> See More & Download </big>  </a> </p>
 </label>


 {% endfor %}

любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Вы можете добавить метод в класс модели, чтобы проверить, существует ли изображение и имеет ли атрибут .url или вернуть изображение по умолчанию.

def get_image(self): if self.app_image and hasattr(self.app_image, 'url'): return self.app_image.url else: return '/path/to/default/image'

Затем в шаблоне {{ home_page.get_image }}

Другим способом было бы проверить none и добавить значение по умолчанию, используя теги шаблонов Django

{{ home_page.app_image.url|default_if_none:'/path/to/default/image' }}

0 голосов
/ 28 октября 2019

Для отображения изображения вы просто используете тег {{ home_page.app_image.url }}. Обратите внимание на .url в конце.

Я бы посмотрел модель файла в Django документах .

Если вы сделаете ImageField необязательным, я рекомендую проверить, еслион существует первым:

{% if home_page.app_image %}
    {{ home_page.app_image.url }}
{% endif %}
...