2011-07-11 35 views
0

我越来越从生产服务器这个错误:找不到原因“类型错误:强迫为Unicode:需要字符串或缓冲区,NoneType发现”

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 

Unfortunely我不能在任何重现开发服务器上的方式。这个例外没有什么帮助。从Django中代码:

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

如果为何NoneType发现它具有 '的unicode' 属性。我是否需要深入研究这个python源代码?将不胜感激任何帮助。

谢谢。

+2

我曾在一个项目中使用过Django。再也不。但在你的情况下,我建议你开始为你的代码编写一些单元测试,你可能会发现这样的问题。 – Keith

回答

1

专注于追踪的这一部分。这看起来像你写的代码。

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应该有一个字符串。

在很多情况下,这是因为有一个未经身份验证的用户,默认匿名用户有时缺少您的“真实”用户拥有的各种属性值。它在开发中没有问题,因为您的开发PC上有允许您登录的cookie。您可能会缺少生产服务器中的一些cookie,并且没有登录。

它有助于将大量的日志输出添加到涉及的视图函数中,以便您可以通读Apache日志并读取看看事情正在破裂。

+0

用户已通过身份验证并具有所有属性。这可能是另一类。我将按照您的建议实施其他日志记录。谢谢。 – synclabs

+0

@synclabs:由于无法呈现响应页面,因此需要一个字符串作为“None”。 80%的时间,“生产”和“发展”之间的差异是认证 - 没有用户或没有用户配置文件或其他缺少的属性。 20%的时间是配置管理。生产服务器有错误的软件或错误的“设置”模块。 –

相关问题