html - 在 Django 中无法从搜索栏呈现结果
问题描述
我一直在 django 的搜索栏上工作,我很接近但在将结果呈现到页面时遇到了一些问题。
视图.py
class SearchResultsView(ListView):
model = Project
template_name = 'search_results.html'
def get_queryset(self):
proj=self.request.GET.get('proj')
proj_list=Project.objects.filter(
Q(name__icontains=proj) | Q(projectTag__icontains=proj)
)
proj_list1=Project.objects.filter(
Q(department__icontains=proj)
)
proj_list2 = list(set(proj_list) & set(proj_list1))
return proj_list2
class SearchPageView(TemplateView):
template_name = 'searchbar.html'
search_results.html
{% extends 'main/base.html' %}
<html>
{%block content%}
<h1> Search Results </h1>
{% if proj %}
<ul>
{% for project in proj_list2%}
<li>
{{project.name}}, {{project.department}}, {{project.projectTag}}
</li>
{% endfor %}
</ul>
{% else %}
<h2>sorry, no results</h2>
{% endif %}
{%endblock%}
</html>
每当我搜索肯定会产生结果的东西时,我都会得到“对不起,没有结果”。
谢谢你。请帮助我了解我的断开连接。更大的目标是添加不同的模型来查询(即不仅在项目中搜索,还可以按用户搜索)。
解决方案
您正在检查错误的变量。元素的集合 is object_list
, notproj
或proj_list2
:
{% if object_list %}
<ul>
{% for project in object_list %}
<li>
{{project.name}}, {{project.department}}, {{project.projectTag}}
</li>
{% endfor %}
</ul>
{% else %}
<h2>sorry, no results</h2>
{% endif %}
搜索也很奇怪,如果部门和名称或标签都匹配,您只会检索项目。我们可以将其简化为:
class SearchResultsView(ListView):
model = Project
template_name = 'search_results.html'
def get_queryset(self):
proj = self.request.GET.get('proj')
return =Project.objects.filter(
Q(name__icontains=proj) | Q(projectTag__icontains=proj),
department__icontains=proj
)
但奇怪的是,部门和名称例如应该匹配。如果您想匹配这三个中的任何一个,我们可以使用:
class SearchResultsView(ListView):
model = Project
template_name = 'search_results.html'
def get_queryset(self):
proj = self.request.GET.get('proj')
return =Project.objects.filter(
Q(name__icontains=proj) |
Q(projectTag__icontains=proj) |
Q(department__icontains=proj)
)
推荐阅读
- python - Python - 将字段列表作为列传递给 SQL 查询
- excel - 电话号码列未被识别为文本。添加引号不会更改值
- javascript - 文本输入返回“”(空字符串)
- bash - 从文件中替换 Bash printf 字符串不考虑引号
- button - SwiftUI 按钮操作不会更新我的观察对象
- google-cloud-nl - Google Cloud Natural Language 情绪分析 API 的更新时间表是什么
- powerbi - BIgQuery 帐户权限
- javascript - 这个python代码的正确javascript代码表达式是什么
- android - 为什么 Flutter 配置文件不适用于 IA 模拟器上的 AOSP
- javascript - 将一个值除以 60 时,得到错误 infdig scope error angularjs