Не удается найти причину "Ошибка типа: приведение к Unicode: нужна строка или буфер, найден NoneType" - PullRequest
0 голосов
/ 11 июля 2011

Я получаю эту ошибку с рабочего сервера:

 File "/home/example/svn/libs/django/core/handlers/base.py", line 100, in get_response
   response = callback(request, *callback_args, **callback_kwargs)

 File "/home/example/svn/src/app/../app/libs/auth/decorators.py", line 125, in __call__
   return self.view_func(request, *args, **kwargs)

 File "/home/example/svn/src/app/../app/membership/decorators.py", line 64, in __call__
   return self.view_func(request, *args, **kwargs)

 File "/home/example/svn/src/app/../app/site/views/system/invoices.py", line 168, in send_via_email_form
   return SendViaEmailFormPage(request, pk, what, sending_type).custom()

 File "/home/example/svn/src/app/../app/security/security.py", line 99, in execute
   return func(*args, **kw)

 File "/home/example/svn/src/app/../app/site/views/system/invoices.py", line 405, in custom
   return self.custom_response or self.response()

 File "/home/example/svn/src/app/../app/security/security.py", line 99, in execute
   return func(*args, **kw)

 File "/home/example/svn/src/app/../app/libs/pages/__init__.py", line 235, in response
   response = render_to_response(self.template, self.data, context_instance=RequestContext(self.request, self.data))

 File "/home/example/svn/libs/django/shortcuts/__init__.py", line 20, in render_to_response
   return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)

 File "/home/example/svn/libs/django/template/loader.py", line 186, in render_to_string
   return t.render(context_instance)

 File "/home/example/svn/libs/django/template/__init__.py", line 173, in render
   return self._render(context)

 File "/home/example/svn/libs/django/template/__init__.py", line 167, in _render
   return self.nodelist.render(context)

 File "/home/example/svn/libs/django/template/__init__.py", line 796, in render
   bits.append(self.render_node(node, context))

 File "/home/example/svn/libs/django/template/__init__.py", line 809, in render_node
   return node.render(context)

 File "/home/example/svn/libs/django/template/__init__.py", line 849, in render
   return _render_value_in_context(output, context)

 File "/home/example/svn/libs/django/template/__init__.py", line 829, in _render_value_in_context
   value = force_unicode(value)

 File "/home/example/svn/libs/django/utils/encoding.py", line 66, in force_unicode
   s = unicode(s)

TypeError: coercing to Unicode: need string or buffer, NoneType found

К сожалению, я никак не могу воспроизвести его на сервере разработки. Исключение не сильно помогает. Из кода Джанго:

if hasattr(s, '__unicode__'):
   s = unicode(s)

Если у него есть атрибут unicode , почему NoneType найден. Должен ли я копаться в исходном коде Python для этого? Буду признателен за любую помощь.

Спасибо.

1 Ответ

1 голос
/ 11 июля 2011

Сосредоточьтесь только на этой части трассировки.Это похоже на код, который вы написали.

 File "/home/example/svn/src/app/../app/membership/decorators.py", line 64, in __call__
   return self.view_func(request, *args, **kwargs)

 File "/home/example/svn/src/app/../app/site/views/system/invoices.py", line 168, in send_via_email_form
   return SendViaEmailFormPage(request, pk, what, sending_type).custom()

 File "/home/example/svn/src/app/../app/security/security.py", line 99, in execute
   return func(*args, **kw)

 File "/home/example/svn/src/app/../app/site/views/system/invoices.py", line 405, in custom
   return self.custom_response or self.response()

 File "/home/example/svn/src/app/../app/security/security.py", line 99, in execute
   return func(*args, **kw)

 File "/home/example/svn/src/app/../app/libs/pages/__init__.py", line 235, in response
   response = render_to_response(self.template, self.data, context_instance=RequestContext(self.request, self.data))

Где-то есть None, где должна быть строка.

Во многих случаях это происходит потому, что у пользователя, не прошедшего проверку подлинности, по умолчанию Anonymousпользователю иногда не хватает различных значений атрибутов, которые есть у ваших «настоящих» пользователей.У него нет проблем в разработке, потому что у вас есть файлы cookie на вашем ПК для разработки, которые позволяют вам войти в систему.Возможно, вам не хватает некоторых файлов cookie с вашего производственного сервера, и вы не входите в систему.

Это помогает добавить много и много выходных данных регистрации в функцию просмотра, связанную с этим, чтобы вы могли читать через Apacheлоги и посмотреть, где что-то ломается.

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