首页 > 解决方案 > 它不会将 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 %}

标签: pythondjangodjango-templates

解决方案


我对您在您看来要做什么感到有些困惑。首先,当您尝试获取数据时,我不明白您为什么要发布到视图中。

我会为你推荐这样的东西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

如果您在入门时遇到困难,请遵循本教程


推荐阅读