Как выполнить поиск в Django - PullRequest
0 голосов
/ 24 мая 2019

У меня проблемы с поиском статей в блоге, над которым я сейчас работаю, он продолжает выдавать мне ошибки

это мои views.py

def search(request):
    template = 'articles/search.html'

    query = request.GET.get('q')

    results = Article.objects.filter(Q(title__icontains=query) | Q(movie_name__icontains=query))

    context = {'results': results}

    return render(request, template, context)

и это моиurl.py

url(r'^results/$', views.search, name="search"),

, и это ошибка, которую он мне дает http://dpaste.com/2DZQDZ3

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Проблема, кажется, исходит от Файл "C: \ Users \ dafom \ Desktop \ moviebackend \ articles \ views.py" в articleDetails 63. article = Article.objects.get (slug = slug)

При попытке извлечь данные с помощью get () выдается исключение, когда объект не найден. Вы либо обрабатываете это с помощью try / catch или встроенного в django get_object_or_404 (), который выдает стандартную ошибку 404, когда объект не найден.

 from django.shortcuts import get_object_or_404
 get_object_or_404(Article, slug=slug)

кроме этого, поиск выглядит хорошо. Возможно, вы захотите добавить функцию Different () к результату, иначе вы получите повторяющиеся результаты.

results = Article.objects.filter(Q(title__icontains=query) | movie_name__icontains=query)).distinct()
0 голосов
/ 24 мая 2019

При использовании метода запроса get(), как в File "C:\Users\dafom\Desktop\moviebackend\articles\views.py" in articleDetails 63. articles = Article.objects.get(slug=slug) из сообщения об ошибке, вы должны использовать блок try / исключением.

Вот пример из документации Django :

from django.core.exceptions import ObjectDoesNotExist
try:
    e = Entry.objects.get(id=3)
    b = Blog.objects.get(id=1)
except ObjectDoesNotExist:
    print("Either the entry or blog doesn't exist.")
...