【发布时间】:2011-10-21 22:26:09
【问题描述】:
我在 Django 项目中有一个简单的搜索应用程序,可以在 CMS 管理员中进行搜索。这是生成 URL 的表单:
标签: python django error-handling content-management-system django-cms
我在 Django 项目中有一个简单的搜索应用程序,可以在 CMS 管理员中进行搜索。这是生成 URL 的表单:
标签: python django error-handling content-management-system django-cms
大概是在您首次请求页面时,在您提交搜索词之前发生此错误 - 很明显,在请求中找不到 q 字段。你只需要先检查一下:
def search(request):
if 'q' in request.GET:
query = request.GET['q']
results = FlatPage.objects.filter(content__icontains=query)
【讨论】:
当您在提交中发布结果时,您正在使用 request.GET。使用 Daniel 提到的检查并改用 POST:
def search(request):
if 'q' in request.GET:
query = request.GET['q']
results = FlatPage.objects.filter(content__icontains=query)
else:
query = ""
results = None
template = loader.get_template('search/search.html')
context = Context({ 'query': query, 'results': results })
response = template.render(context)
return HttpResponse(response)
【讨论】:
您可以将行从query = request.GET['q']更改为query = request.GET.get('q')
注意get() 函数...当然这里的其他答案也可以。看到这个类似的问题:
【讨论】: