如何在Django中执行搜索

时间:2019-05-24 08:37:17

标签: django django-models django-views

我在搜索博客帖子中的文章时遇到问题,而我目前正在处理该文章,这总是让我出错

这是我的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 个答案:

答案 0 :(得分:1)

问题似乎来自 articleDetails中的文件“ C:\ Users \ dafom \ Desktop \ moviebackend \ articles \ views.py”   63. Articles = Article.objects.get(slug = slug)

在未找到对象的情况下,尝试使用get()获取数据会引发异常。您可以使用try / catch或django的内置get_object_or_404()来处理它,当找不到对象时会抛出标准404错误。

'hello' [0-9a-zA-Z]*

除此之外,搜索看起来不错。您可能需要添加distinct()来生成结果,否则将得到重复的结果。

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

答案 1 :(得分:0)

当您从错误消息中使用get()中的 File "C:\Users\dafom\Desktop\moviebackend\articles\views.py" in articleDetails 63. articles = Article.objects.get(slug=slug)查询方法时,必须使用try / except块。

下面是Django documentation中的一个示例:

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.")