Django当我尝试搜索表单时它的值得到了你

时间:2011-02-07 00:05:08

标签: django unicode get

我正在尝试搜索教程,但是我收到错误,显示我搜索了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'

1 个答案:

答案 0 :(得分:2)

你只是意味着字符串以unicode显示。 django中的默认编码是unicode。不要过分烦恼,实际结果将始终是单引号之间的字符串。

有关详细信息,请查看此处。 http://docs.djangoproject.com/en/dev/ref/unicode/

因此,如果查询中的类型不匹配,则可能出现错误。而不是

message = '%s' % q 

尝试

message = str(q) 

message = int(q)

可能适用。