python - django搜索页面抛出数据
问题描述
我在使搜索页面正常工作方面遇到了一些困难。问题是我的模板和视图在搜索页面上抛出数据。而且我的搜索按钮功能不起作用。如果有人可以看看并建议我缺少什么,将不胜感激。
提前致谢。
- 以下是我的看法:
from django.shortcuts import render
# Create your views here.
#from django.shortcuts import render
from django.http import HttpResponse
from .mongodb_connection import mongosearch
from .models import AppModel
from django.db.models import Q
# Create your views here.
def search_view(request):
model = AppModel
template_name = 'search.html'
results = []
title_term = ""
desc_term = ""
search_term = ""
url_term = ""
titles = AppModel.objects.all()
url = AppModel.objects.all()
if 'search' in request.GET:
search_term = request.GET['search']
titles = titles.filter(
Q(title__icontains=search_term) |
Q(desc__icontains=search_term)
)
titles = AppModel.objects.all()
results = mongosearch(title=title_term
#,desc = desc_term)
)
print(results)
context={
'results':results,
'search_term':search_term,
'titles':titles
}
return render(request, 'search.html', context)
- 以下html页面
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<!doctype html>
<html>
<nav class="navbar navbar-light bg-light">
<form class = "form-inline my-2 my-lg-1" method = "GET">
<!--action = "{%url 'search_view'%"> -->
<input
class="form-control mr-sm-2"
type="search"
placeholder="Search"
aria-label="Search"
name = 'search'
value = "{{request.GET.search}}">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
<br><br>
{% if titles %}
<ul class="messages">
{%for i in titles %}
<li class = "list-group-item">
{{i.title}}
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
</html>
- mongo_connection
from pymongo import MongoClient
from pprint import pprint
def mongosearch(title=""):
connection = MongoClient('localhost',27017)
db = connection.djangodb
collection = db.spiderCollection
titles = collection.find()
for title in titles:
pprint(titles)
解决方案
看起来您正在使用视图中的所有对象覆盖过滤的查询集。您需要删除多余的行:
search_term = request.GET['search']
titles = titles.filter(
Q(title__icontains=search_term) |
Q(desc__icontains=search_term)
)
titles = AppModel.objects.all() # remove this line to not overwrite list
results = mongosearch(title=title_term
#,desc = desc_term)
)
print(results)
推荐阅读
- angular - Passport-Azure-AD 未从 MSAL Angular 身份验证验证 access_token
- python - Yolov4 权重转换为 tflite 失败
- python - 以不同角度跨 Contourf 图切片以获得 2D 线图
- c++ - 整数的 C++ 占位符值
- java - Java, Sockets, UTF-8, 我看不懂格式
- oracle - 报错:ORA-06502: PL/SQL: numeric or value error: string buffer too small APEX
- java - 将泛型参数传递给方法时,Java 编译器生成不兼容错误
- javascript - 在一定范围内离开元素后如何保持悬停属性处于活动状态?
- teradata - SET SESSION DATEFORM = ANSIDATE 似乎在 BTEQ 中不起作用
- amazon-web-services - 无服务器框架 - 尝试填充非字符串值错误