【问题标题】:Django CMS annonying errorDjango CMS 烦人的错误
【发布时间】:2011-10-21 22:26:09
【问题描述】:

我在 Django 项目中有一个简单的搜索应用程序,可以在 CMS 管理员中进行搜索。这是生成 URL 的表单:


,这是 URL:
(r'^search/$', 'search.views.search'),
这是视图:
def search(request):
    查询 = request.GET['q']
    结果 = FlatPage.objects.filter(content__icontains=query)
    模板 = loader.get_template('search/search.html')
    上下文=上下文({'查询':查询,'结果':结果})
    响应 = 模板。渲染(上下文)
    return HttpResponse(response)
,这是模板:
    
        搜索页面
    头>
    
        您搜索了“{{ query }}”;结果如下。
        <ul>
            {% for page in results %}
                <li><a href="/default/index/tourl?u=e3sgcGFnZS5nZXRfYWJzb2x1dGVfdXJsIH19">{{ page.title }}</a></li>
            {% endfor %}
        </ul>正文>

标签: python django error-handling content-management-system django-cms


【解决方案1】:

大概是在您首次请求页面时,在您提交搜索词之前发生此错误 - 很明显,在请求中找不到 q 字段。你只需要先检查一下:

def search(request):
    if 'q' in request.GET:
        query = request.GET['q']
        results = FlatPage.objects.filter(content__icontains=query)

【讨论】:

  • Apache 说:如果 response.status_code == 404: AttributeError: 'dict' object has no attribute 'status_code'/
【解决方案2】:

当您在提交中发布结果时,您正在使用 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)        

【讨论】:

  • 我用 GET 和 POST 都试过了,但它似乎不起作用。 Apache 吐出同样的错误:如果 response.status_code == 404: AttributeError: 'dict' object has no attribute 'status_code'/
  • 试试修改后的代码。您正在表单中使用 method='get'。
【解决方案3】:

您可以将行从query = request.GET['q']更改为query = request.GET.get('q')

注意get() 函数...当然这里的其他答案也可以。看到这个类似的问题:

'instancemethod' object has no attribute '__getitem__'

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2011-10-02
    • 2014-05-20
    • 2011-07-26
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多