1

django-users メーリング リストで質問しましたが、回答がありませんでした。

以前のバージョンの Django では、TEMPLATE_DEBUG 設定が True の場合は常に、テンプレートのレンダリング中に発生した例外 (テンプレート構文に関係のない例外であっても) は TemplateSyntaxError でラップされ、再発生していました。これは、デバッグ 500 ページで詳細なテンプレート ソースの場所情報を提供するために行われました。

Django 1.4 では、例外はラップされなくなりました。代わりに、元の例外にソース情報の注釈が付けられます。これは、TEMPLATE_DEBUG の値に関係なく、テンプレート レンダリングからの例外のキャッチが一貫しており、他のエラーをキャッチするために TemplateSyntaxError をキャッチしてラップ解除する必要がないことを意味します。

かなりクール..だと思います。しかし、今、発生した例外をどのように確認できますか?

テンプレートを含めたり、例外を発生させるテンプレート タグを呼び出したりしても、何も起こりません。

追加された堅牢性に感謝します..しかし、これらの例外を表示する方法に関する明確なドキュメントがなければ、デバッグは少し面倒です.

4

1 に答える 1

1

私はあなたの質問を理解しているかどうか確信が持てませんが、答えてみます。

DEBUGTEMPLATE_DEBUGがで、レンダリング中に例外が発生するTrueと、(この Django 開発者にはよく知られている) 黄色のエラー ページが表示されます。

Django 1.3 以前では、Django はTemplateSyntaxError

/my-url/ の TemplateSyntaxError

レンダリング中に ValueError をキャッチしました: これは例外値です
リクエスト メソッド: GET
リクエスト URL: http://127.0.0.1:8000/my-url/
Django バージョン: 1.3.1
例外タイプ: TemplateSyntaxError
例外値: レンダリング中に ValueError をキャッチしました: Thisは例外値です

Django 1.4 以降では、代わりに元の例外が表示されます。

/my-url/ の ValueError

これは例外値です
リクエスト メソッド: GET
リクエスト URL: http://127.0.0.1:8000/my-url/
Django バージョン: 1.4
例外タイプ: ValueError
例外値: これは例外値です

これを自分でテストするには、テンプレートに含めるテンプレート タグで例外を発生させてみてください。

raise ValueError("This is the exception value")

または、違いを確認するさらに簡単な方法は、無効なビュー名で url タグを使用することです。

{% url invalid_view_name %}
于 2012-04-11T15:27:06.070 に答える