python - 它不会将 QuerySet 过滤器数据返回到 HTML
问题描述
我正在尝试使用以下代码将所有数据打印到HTML页面中。当我在命令提示符下打印数据时,它可以正常工作,但不能将数据打印到HTML中。
命令提示符中 view.py 的view.py 输出我想将相同的数据打印到HTML
def previousYear(request):
Subjects = Subject.objects.all()
filters = None
Papers = None
print("=========================================================")
if request.method == "POST":
if (request.POST.get("Year") != "") & (request.POST.get("Department") != ""):
a = request.POST.get("Year")
b = request.POST.get("Department")
filters = Subjects.filter(Year=a,Department_id=b)
for i in filters:
Papers = Pre_Q_Paper.objects.filter(Subjects=i)
if Papers.exists():
print(i)
for j in Papers:
print(j)
data = {"papers":Papers,
"filters":filters}
return render(request,"Previous.html", data)
main.html
{%for i in filters%}
<h2>{{i}}</h2>
{% for item in papers %}
<h2>{{ item }}</h2>
{% endfor %}
{% endfor %}
解决方案
我对您在您看来要做什么感到有些困惑。首先,当您尝试获取数据时,我不明白您为什么要发布到视图中。
我会为你推荐这样的东西views.py
def previous_year(request):
data = {
"papers": [],
"subjects": [],
}
if request.method == 'GET':
year = request.GET.get('year', '')
dep_id = request.GET.get('department', '')
if year and dep_id:
subjects_filtered = Subjects.objects.filter(Year=year, Department_id=dep_id)
papers = Pre_Q_Paper.objects.filter(Subjects__in=subjects_filtered)
data["papers"] = papers
data["subjects"] = subjects_filtered
return render(request, "Previous.html", data)
然后在你的Previous.html
{% for subject in subjects %}
<h2>{{ str(subject) }}</h2>
{% for paper in papers %}
{{ str(paper) }}<br />
{% endfor %}
{% endfor %}
然后通过查询参数提交年份和部门 ID,如下所示:
<view_url>?year=2018&department=2
如果您在入门时遇到困难,请遵循本教程
推荐阅读
- android - HMS Weather Awareness 中的 getAqi() 始终返回空值
- python - Django context_processor 没有名为的模块
- python - 卸载的 wrapt 模块:Python 不工作
- xcode - 是否可以创建独立的 Quick Look 扩展/插件?
- angular - 如何在 Angular 中使用 multipart/form-data 签署 AWS 请求?
- windows - 如何使批处理文件在继续之前等待另一个调用的所有进程完成
- c# - 如何将数据插入 EF Core 中的关系表
- node.js - 无法安装和运行 nodemon npm - Nodejs
- jenkins - 将詹金斯中的初始管理员密码提供给解锁詹金斯后,我遇到了问题
- azure - Set-AzDataFactoryV2 参数无效