显示html页面内的所有模型数据

时间:2014-03-03 10:55:35

标签: python html django

我正在尝试建立一个包含产品和类别的网站。

当您在产品的页面上时,可以单击按钮查看其所属的所有类别的列表。 您可以单击所有页面上显示的另一个按钮,以查看所有类别的列表。

在html页面see_all_categories中,我写了一个这样的简单块:

{% extends 'base.html' %}
{% load staticfiles %}

{% block content%}

    {{Category.all}}

{% endblock content %}

我希望看到所有类别的打印输出都很乱,但我没有。除了base.html

之外,它不会返回任何错误,但它不会产生任何错误

我做错了什么?

2 个答案:

答案 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 %}

现在它有效!!