4

Django 1.0で次の(Django 0.96)ディスパッチャーフックをどのように実行しますか?

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) 

ちなみに、このコードは、GAEでのDjangoの使用に関するGoogleの記事からのものです。残念ながら、Djangoのディスパッチコードは0.96から1.0の間で書き直されており、Googleの例はDjango1.0では機能しません。

もちろん、Djangoの人々は、この移行を正確に行う方法について役立つガイドを提供しましたが、現時点ではそれを理解するのに十分な熱意はありません。:o)

読んでくれてありがとう。

ブライアン

4

1 に答える 1

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)
于 2009-08-13T03:58:30.737 に答える