显示Django数据库中的数据

时间:2018-10-18 13:33:21

标签: django

我正在尝试显示mysql数据库中的数据。我已经使用django admin将数据上传到数据库: enter image description here

这是我的模型。py:

from django.db import models


# Create your models here.
class Newsform(models.Model):
    headline = models.CharField(max_length=50)
    description = models.CharField(max_length=100, default='')
    content = models.CharField(max_length=100, default='')
    image = models.ImageField(upload_to='news_image', blank=True)

views.py:

from django.shortcuts import render
from blog.models import Newsform


def first(request):
    return render(request, 'blog/index.html')


def show_content_from_database(request):
    headline_news=Newsform.objects.all()
    context = {
        'headline_news': headline_news
    }
    return render(request, 'blog/index.html', context)

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ headline_news.headline }}</h1>
<img src="{{ headline_news.image }}">
</body>
</html>

结果是我的页面空白。怎么了?

2 个答案:

答案 0 :(得分:1)

headline_news是一个查询集,即数据库中所有Newsform项目的列表。 queryset本身没有标题或图像,只有其中的单个项目才有。因此,您需要遍历它:

<body>
{% for headline in headline_news %}
  <h1>{{ headline.headline }}</h1>
  <img src="{{ headline.image.url }}">
{% endfor %}
</body>

还要注意,正如我上面显示的那样,您需要在ImageField上显式使用.url属性来获取src的值。

答案 1 :(得分:0)

属性url搜索默认情况下在media内部上载的图像,您可以使用{{ headline.image.url }}调用它