我正在尝试建立一个包含产品和类别的网站。
当您在产品的页面上时,可以单击按钮查看其所属的所有类别的列表。 您可以单击所有页面上显示的另一个按钮,以查看所有类别的列表。
在html页面see_all_categories
中,我写了一个这样的简单块:
{% extends 'base.html' %}
{% load staticfiles %}
{% block content%}
{{Category.all}}
{% endblock content %}
我希望看到所有类别的打印输出都很乱,但我没有。除了base.html
。
我做错了什么?
答案 0 :(得分:1)
您想要显示类别列表。我假设你的Category模型拥有一个名为“title”的属性,它是你的Category的代表。
如果您正在使用Django模板引擎或Jinja2,您可以在模板中创建一个for循环:
{% for cat in Category.objects.all %}
<a href="#">{{ cat.title }}</a>
{% endfor %}
作为疑难解答,我建议您不要将类别模型传递给模板,这不是自动完成的。在渲染模板之前,必须将模型添加到上下文中。
如评论中所提到的,这里是使用Django模板进行模板渲染的文档 Django Template Guide
要将模型添加到上下文中,您可以关注this guide 我不打算进一步帮助你,因为我缺乏信息,根据你的设置,可能会有很多变化。 (基于类的视图?基于功能的视图?您使用的是哪种模板......等等)
答案 1 :(得分:0)
经过许多长时间的烦恼尝试后,我想出了解决方案。我觉得自己很愚蠢,但是我想让下一个人在两包装中留下巨大的痛苦。
这就是我所做的:
在Views.py中,我更改了此页面的视图功能 FROM :
def view_all_categories(request):
context = {'Category' : Category}
return render(request, 'store/see_all_categories.html', context)
TO 此
def view_all_categories(request):
all_cats = Category.objects.all().order_by('id')
context = {'all_categories' : all_cats}
return render(request, 'store/see_all_categories.html', context)
在页面see_all_categories.html
本身,我更改了(从问题) TO 这个:
{% extends 'base.html' %}
{% load staticfiles %}
{% block content%}
{% for cat in all_categories %}
<p>{{ cat.name }}</p>
{% endfor %}
{% endblock content %}
现在它有效!!