django данные о поиске страниц - PullRequest
0 голосов
/ 09 февраля 2020

Я сталкиваюсь с некоторыми трудностями при работе поисковой страницы. Проблема в моем шаблоне и просмотре метательных данных на странице поиска. И моя функция поиска кнопки не работает. Если кто-то может взглянуть и посоветовать то, что мне не хватает, будет высоко оценено.

Заранее спасибо.

вот как уродливо выглядит моя страница поиска enter image description here

  • мой взгляд следующий:
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)

1 Ответ

1 голос
/ 09 февраля 2020

Похоже, вы перезаписали отфильтрованный набор запросов всеми объектами в вашем представлении. Вам необходимо удалить лишнюю строку:

     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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...