2011-07-11 12 views
0

を「:Unicodeへの強制変換はTypeError必要文字列またはバッファを、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私はいずれかでそれを再現することはできません開発サーバー上で例外はあまり役に立たない。ジャンゴコードから:

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

NoneTypeが発見された理由、それは 'ユニコード' 属性を持っている場合。このために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があるため、開発に問題はありません。プロダクションサーバーからクッキーが抜けていて、ログインしていない可能性があります。

これは、ログに多くのロギング出力を追加するのに役立ちます。これにより、Apacheログと物事が壊れているところを見てください。

+0

ユーザーは認証され、すべての属性を持ちます。それは別のクラスかもしれません。私は提案したように追加のロギングを実装します。ありがとう。 – synclabs

+0

@synclabs:レスポンスページはレンダリングできないので、文字列が必要な場所は 'None'です。 80%の時間では、「生産」と「開発」の違いは認証です。ユーザプロファイルやその他の属性の欠落はありません。設定管理の20%。プロダクションサーバーに間違ったソフトウェアまたは間違った 'settings'モジュールがあります。 –

関連する問題