【发布时间】:2011-02-07 00:05:07
【问题描述】:
我正在尝试执行搜索教程,但出现错误,显示我搜索的是 u'foo' 而不是 foo。如果我只是用'%s' % q 打印消息,它只会显示foo
def search(request):
q = request.GET.get("q",None)
if q:
message = '%s' % q
message = Envio.objects.get(destinatario=message)
else:
message = 'Empty'
return HttpResponse(message)
def search_form(request):
return render_to_response('envios/search_form.html')
错误:
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
100. response = callback(request, *callback_args, **callback_kwargs)
File "C:\mysite\envios\views.py" in search
35. message = Envio.objects.get(destinatario=message)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in get
347. % self.model._meta.object_name)
Exception Type: DoesNotExist at /envios/search/
Exception Value: Envio matching query does not exist.
在此之下:
Request information
GET
Variable Value
q u'102'
【问题讨论】:
-
请显示错误。错误发生在哪里?
-
请注意,如果您
print '%r' % q,您将看到 unicode 字符串的实际表示。 -
@Jaime - destinatario 是 Envio 模型的一个领域吗?
-
当我使用 shell 执行 objetcs.get(id=something) 时,它可以工作。
-
@Jaime - 是 destinatario 字符串类型或整数类型。如果查询中的类型不匹配,则可能会出现错误。因此,请尝试使用
message = str(q)或message = int(q)而不是message = '%s' % q。