【问题标题】:Django Search Query FailsDjango 搜索查询失败
【发布时间】:2011-12-27 19:10:50
【问题描述】:

我在我正在开发的一个小型网站上实现了此搜索功能,但我在执行搜索查询时遇到了问题。这是回溯:

Traceback (most recent call last):
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
    response = self.get_response(request)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/core/handlers/base.py", line 169, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/Users/glosseyvilly/PycharmProjects/first_django_dev/apps/photos/views.py", line 113, in search_photos
    'search_query': search_query
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/shortcuts/__init__.py", line 44, in render
    return HttpResponse(loader.render_to_string(*args, **kwargs),
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/loader.py", line 188, in render_to_string
    return t.render(context_instance)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 123, in render
    return self._render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 117, in _render
    return self.nodelist.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/debug.py", line 73, in render_node
    result = node.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/loader_tags.py", line 127, in render
    return compiled_parent._render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 117, in _render
    return self.nodelist.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/debug.py", line 73, in render_node
    result = node.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/loader_tags.py", line 64, in render
    result = block.nodelist.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/debug.py", line 73, in render_node
    result = node.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/defaulttags.py", line 311, in render
    return self.nodelist_true.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 744, in render
    bits.append(self.render_node(node, context))
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/debug.py", line 73, in render_node
    result = node.render(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/defaulttags.py", line 227, in render
    nodelist.append(node.render(context))
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 915, in render
    resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 653, in resolve
    value = self._resolve_lookup(context)
  File "/Users/glosseyvilly/Desktop/web_dev/ccdev/lib/python2.6/site-packages/django/template/base.py", line 692, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute
TemplateSyntaxError: Caught VariableDoesNotExist while rendering: Failed lookup for key [user] in u"'uploaded_photos/Published/2011/December/21/image_5.jpeg'"

这是我的视图函数:

def search_photos(request):
    """

    """
    search_query = ''
    results = None
    if ('q' in request.GET) and request.GET['q'].strip():
            search_query = request.GET['q']
        photo_query = get_query(search_query, ['caption',])
        results = Photo.objects.filter(photo_query).order_by('-date_added')

    return render(request, 'photos/search.html', {
        'results': results,
        'search_query': search_query
    })

注意:回溯突出显示 'search_query': search_query 是一个可能的错误,我不知道为什么。

编辑:这是我的 search.html 模板的链接:gist.github.com/1524911

【问题讨论】:

  • 错误在您的模板中。你应该发布那个。 (如果您的 settings.py 中有 TEMPLATE_DEBUG = True,它将突出显示相关行)。

标签: django search django-templates django-views


【解决方案1】:
  1. 您需要将错误消息格式化为代码块。
  2. 具体错误在回溯的末尾:Failed lookup for key [user] in u"'uploaded_photos/Published/2011/December/21/image_5.jpeg'" 发生在_resolve_lookup。这是为模板获取变量值的例程。

我会认真看一下模板。请特别注意任何可能会进行奇怪查找的棘手循环引用或模板标签(例如 {% expr %} 浮现在脑海中)。让我们知道您的想法。

更新:

我的钱已经上线了:

     {% phileo_widget result.user result %}

result 对象是否有一个名为 user 的属性?

【讨论】:

  • 天啊,我不敢相信我错过了。谢谢你! :)
【解决方案2】:

你的方法不应该把self作为它的第一个参数吗?:

def search_photos(self):

因此,您可以通过以下方式访问 request 对象:

request = self.request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多