2011-02-07 4 views
1

검색 자습서를 만들려고 시도하고 있지만 foo 대신 u'foo'을 검색 한 오류가 나타납니다. 난 그냥 '%s' % q으로 메시지를 인쇄 할 경우 보여줍니다 단지 foo 오류Django에서 값을 가져 오는 형식을 검색하려고 할 때

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

오류를 보여주십시오. 오류는 어디에서 발생합니까? –

+0

% r '% q'을'print'하면 유니 코드 문자열의 실제 표현을 볼 수 있습니다. –

+0

@Jaime - 대상이 Envio 모델입니까? – Neo

답변

2

U ''단지 문자열에 표시되는 것을 의미 유니 코드. django의 기본 인코딩은 유니 코드입니다. 너무 많이 신경 쓰지 마세요. 실제 결과는 항상 작은 따옴표 사이의 문자열입니다.

자세한 내용은 여기를 참조하십시오. http://docs.djangoproject.com/en/dev/ref/unicode/

쿼리의 유형이 일치하지 않으면 얻을 수있는 오류가 발생합니다. 그래서 그 대신

message = '%s' % q 

의 적용 할 수 있으므로

message = int(q) 

message = str(q) 

또는

을 시도해보십시오.

관련 문제