Django在模板中显示数据库中的数据

时间:2017-10-18 21:54:36

标签: python django

我在django

模板上显示数据库中的数据时遇到了一些问题

模型:

class CityInfo (models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)
    landmark_type = models.CharField(blank=True, max_length=30)

    business = 'Business'
    student = 'Student'
    tourist = 'Tourist'

    def __str__(self):
        return self.name

相关观点:

def itemget(request):
    data=CityInfo.objects.all()
    return render(request,'CityApp/infopage.html', {'data': data})  

相关网址:

url(r'itemget/$',views.itemget,{'template_name': 'CityApp/info_page.html'},name='itemget'),

infopage.html:

<ul>
    {% for item in data %}
    <li>      
        <h1>{{ item.name }}</h1>
     </li>
    {% endfor %}
<ul>  

上面的html会产生一个空白列表,我不明白为什么。

2 个答案:

答案 0 :(得分:0)

尝试将views.py更改为以下内容:

def itemget(request):
    data = CityInfo.objects.all()
    context={
      'data': data
    }
    return render(request, "CityApp/infopage.html", context)

答案 1 :(得分:0)

试试这个:

def __str__(self):
    return "%s"  %  self.name

我不确定因为我在我的旧智能手机上。

否则,您的def __str__在课堂上缩进了吗?

您使用的是Python 2还是Python 3?如果是Python 3,则str。否则,您必须使用__unicode__

编辑:

从你的urls.py文件中,你有:

url(r'itemget/$',views.itemget,{'template_name': 'CityApp/info_page.html'},name='itemget'),

移除视图中已有的template_name part,不要忘记在^之前添加itemget

url(r'^itemget/$',views.itemget ,name='itemget'),