我正在做一个 django 项目(我是 django 的新手)。到目前为止,除了一个我似乎无法弄清楚的问题之外,一切都运行顺利。
这是我的 Django 获取方法:
class Index(TemplateView):
template_name = 'project/index.html'
def get(self, request):
allBrands = InventoryItem.objects.values_list('brand', flat=True).distinct().order_by('totalReviews')
allAgeGroups = InventoryItem.objects.values_list('ageGroup', flat=True).distinct()
items = InventoryItem.objects.all()
return render(request, self.template_name, {
'items': items,
'allBrands': allBrands,
'allAgeGroups': allAgeGroups,
})
index.html 的重要部分
{% extends "project/base.html" %}
{% block content %}
{% include "project/nav.html" with allBrands=allBrands allAgeGroups=allAgeGroups %}
<div>{{allAgeGroups}}</div>
<div>{{allBrands}}</div>
我正在尝试将信息获取到 nav.html allBrands 让它很好,但 allAgeGroups 没有使它进入 index.html 或 nav.html
当我添加
'allAgeGroups'
时,我遇到了以下问题:由于某种原因 index.html
没有收到信息。
查询有效。
当我在
print(allAgeGroups)
函数中 get()
时,我在控制台中什么也没有得到
当我在
print(allAgeGroups)
函数中 post()
时,我在控制台中得到 <QuerySet ['Adult', 'Youth']>
(我想要的)
我刚刚意识到我可以从渲染函数中删除所有内容,保存文件,刷新页面,并且一切仍然有效???
发生了什么事?
谢谢你。
您对同一个模型调用了 3 次,尽管这似乎没有必要。 最好尝试这样的事情:
views.py
class Index(TemplateView):
template_name = 'project/index.html'
def get(self, request):
items = InventoryItem.objects.all()
return render(request, self.template_name, {
'items': items,
})
index.html
{% extends "project/base.html" %}
{% block content %}
{% include "project/nav.html" with items=items %}
{% for item in items %}
<div>{{ item.ageGroup }}</div>
<div>{{ item.brand }}</div>
{% endfor %}
{% endblock %}
并且不要忘记在
urls.py
中注册您的 TemplateView。