2009-08-12 4 views
4

Django 1.0では、次の(Django 0.96)ディスパッチャーフックをどのように実行しますか?Django 0.96から1.0.2へのdjango.dispatch.dispatcherの移行

import django.dispatch.dispatcher 

def log_exception(*args, **kwds): 
    logging.exception('Exception in request:') 

# Log errors. 
django.dispatch.dispatcher.connect(
    log_exception, django.core.signals.got_request_exception) 

# Unregister the rollback event handler. 
django.dispatch.dispatcher.disconnect(
    django.db._rollback_on_exception, 
    django.core.signals.got_request_exception) 

なお、このコードはGoogle's Article on Using Django on GAEです。残念ながらDjangoのディスパッチコードは0.96から1.0に書き換えられ、Googleの例はDjango 1.0では動作しません。

もちろん、Djangoの人々はこの移行を正確に行う方法についてhelpful guideを提供しましたが、私は現時点でそれを把握するのには十分ではありません。 :o)

お読みいただきありがとうございます。

ブライアン

答えて

5

基本的な違いは、あなたはもはやあなたが直接信号を尋ね、いくつかのシグナルにあなたを接続するためのディスパッチャを依頼することはありません。だから、次のようになります:

from django.core.signals import got_request_exception 
from django.db import _rollback_on_exception 

def log_exception(*args, **kwds): 
    logging.exception('Exception in request:') 

# Log errors. 
got_request_exception.connect(log_exception) 

# Unregister the rollback event handler. 
_rollback_on_exception.disconnect(got_request_exception) 
+1

恐ろしい - ありがとう。 :o) –

関連する問題