2011-02-07 61 views
1

我正在尝试执行搜索教程,但出现错误,它显示我搜索了u'foo'而不是foo。如果我只是打印的消息'%s' % q它只显示fooDjango当我尝试搜索表单时,它的值会变为'

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

请显示错误。错误发生在哪里? – 2011-02-07 00:08:44

回答

2

U '' 只是意味着该字符串中显示Unicode格式。 django中的默认编码是unicode。不要打扰你太多,实际结果将始终是单引号之间的字符串。

欲了解更多信息,请看这里。 http://docs.djangoproject.com/en/dev/ref/unicode/

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

message = '%s' % q 

尝试

message = str(q) 

message = int(q) 

如可应用。

相关问题