我的“新闻”页面无法正常工作,它正在数据库中保存信息,但不显示任何内容。
这里是 HTML:
{% extends 'base.html' %}
{% block content %}
<h1 class = 'product'>News</h1>
{% for item in new %}
<div><br><strong><a href='/news/{{ item.id }}'>{{ item.title }}:</a></strong><br> {{ item.article }} <br>{{ item.views }} views</div>
{% endfor %}
{% endblock %}
我的views.py:
def news(request):
return render(request, 'news.html', {'news': New.objects.all()})
Models.py:
class New(models.Model):
title = models.CharField(max_length = 50)
article = models.TextField()
views = models.IntegerField(default = 0)
user_views = models.ManyToManyField(to = User, blank = True)
category = models.ForeignKey(to = NewCategory, on_delete = models.SET_NULL, null = True, blank = True, verbose_name = 'Категория')
views_qty = models.IntegerField(default = 0)
def __str__(self):
return self.title
问题在于的视图和模板中使用了不同的变量名。
在视图中,传递了一个名为
news
的上下文变量:
return render(request, 'news.html', {'news': New.objects.all()})
但在的模板中,正在循环遍历名为
new
的变量:
{% for item in new %}
为了解决这个问题,需要将模板中的变量名更改为
news
,使其与视图中传递的变量名匹配:
{% extends 'base.html' %}
{% block content %}
<h1 class = 'product'>News</h1>
{% for item in news %}
<div><br><strong><a href='/news/{{ item.id }}'>{{ item.title }}:</a></strong><br> {{ item.article }} <br>{{ item.views }} views</div>
{% endfor %}
{% endblock %}
进行此更改后,的新闻页面应该会正确显示数据库中的信息。
标签:python,html,django From: 78805739