Reputation: 91
I am facing bit of difficulty in making search page work. The problem is my template and view throwing data on search page. And my search button function doesnt works. If some one can have a look and advise what i m missing would be highly appreciated.
Thanks in advance.
this is how ugly my search page looks
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)
<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>
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)
Upvotes: 0
Views: 46
Reputation: 47354
Looks like you are overwrite filtered queryset with all objects in your view. You need to remove redundant line:
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)
Upvotes: 1