django Pymon go Ошибка панели поиска необходимо руководство / учебник - PullRequest
0 голосов
/ 05 февраля 2020

Я новичок во всем этом, все еще учусь.

Теперь задача для меня - создать панель поиска, используя mongodb

Что я сделал до сих пор

  • создал файл mongodb_connection.py для установки sh соединения с помощью pymon go
from pymongo import MongoClient


def mongosearch(title=""):
    connection = MongoClient('localhost',27017)
    db = connection.djangodb
    collection = db.spiderCollection
    title = collection.find()
    for title in titles:
        pprint.pprint()
  • создал представление и метод импорта из mongodb_connection следующим образом:
from django.shortcuts import render
from django.http import HttpResponse
from .mongodb_connection import mongosearch
from .models import AppModel

# Create your views here.

def search_view(request):

    results = []
    title_term = ""
    search_term = ""
    titles = AppModel.objects.all()

    if 'search' in request.GET:
        search_term = request.GET['search']
        titles = titles.filter(title__icontains=search_term)
        results = mongosearch(title=title_term)
        print(results)

    context={
        'results':results,
        'count':len(results),
        'search_term':search_term,
        'titles':titles
    }

    return render(request, 'search.html', context)
  • добавил models.py
from django.db import models

class AppModel(models.Model):
    title = models.CharField(max_length=100, primary_key=True)
    desc = models.CharField(max_length=100)
    url = models.CharField(max_length=100)

    class Meta:
        db_table = "spiderCollection"
  • , затем изменил URL
from django.urls import path, include
from . import views
from django.conf.urls import url

app_name = 'searchapp'
urlpatterns=[
    path('',views.search_view, name='search_view'),

]
  • создал 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">
        <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>
        <ul>
            {%for i in titles %}
            <li>
                {{i.titles}}
            </li>
            {% endfor %}
        </ul>
    </form>
</nav>

</html>

Проблема в том, что я получаю данные из mongodb. Я думаю, что я довольно близко. Как только я ввожу значения в поиске и нажимаю «Отправить», происходит следующее:

Exception Type: NameError
Exception Value:    
name 'titles' is not defined
Exception Location: /Users/qasimbutt/PycharmProjects/IntegratedProject/searchui/searchapp/mongodb_connection.py in mongosearch, line 9

Может кто-нибудь мне помочь, какие изменения я могу внести в файл mongodb_connection.py, чтобы он начал работать? Также, пожалуйста, сообщите, если что-то здесь отсутствует. Поскольку мне нужно получить данные из mongodb и отобразить их при поиске.

Еще раз спасибо.

1 Ответ

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

Просто глядя на вашу первую функцию, строка:

    for title in titles:

ссылается на titles, прежде чем она будет определена где-либо. Вы могли бы иметь в виду:

    titles = collection.find()
    for title in titles:
...