Django, когда я пытаюсь найти форму, ее значение получает U ' - PullRequest
1 голос
/ 07 февраля 2011

Я пытаюсь выполнить руководство по поиску, но я получил сообщение об ошибке, в котором показано, что я искал 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 Ответ

2 голосов
/ 07 февраля 2011

u '' просто означает, что строка отображается в юникоде. Кодировка по умолчанию в django - это юникод. Не беспокойтесь слишком сильно с u '', фактическим результатом всегда будет строка между одинарными кавычками.

Для получения дополнительной информации, смотрите здесь. http://docs.djangoproject.com/en/dev/ref/unicode/

Таким образом, ошибка, которую вы получаете, возможна, если типы в запросе не совпадают. Так что вместо

message = '%s' % q 

попробуй

message = str(q) 

или

message = int(q)

в зависимости от обстоятельств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...