我在搜索博客帖子中的文章时遇到问题,而我目前正在处理该文章,这总是让我出错
这是我的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
答案 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.")