我正在尝试搜索教程,但是我收到错误,显示我搜索了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'
答案 0 :(得分:2)
你只是意味着字符串以unicode显示。 django中的默认编码是unicode。不要过分烦恼,实际结果将始终是单引号之间的字符串。
有关详细信息,请查看此处。 http://docs.djangoproject.com/en/dev/ref/unicode/
因此,如果查询中的类型不匹配,则可能出现错误。而不是
message = '%s' % q
尝试
message = str(q)
或
message = int(q)
可能适用。