ユーザーが独自のテンプレートをテキストエリアに送信できるページがありますが、今のところはそれほど単純にする必要があります。ただし、それはユーザーが生成した入力であるため、アプリケーションの残りの部分を壊すようなことをしていないことを確認する必要があります。
有用なフィードバックを提供する目的で、django が提供するものに似たものが必要です (django 1.4 を使用):
特に上記のビット。ユーザーテンプレートをdjangoテンプレートに入れているので、構文エラーや自分で確認する必要はありません。それは次のようになります。
try:
template = get_template_from_string(user_input)
template.render(context=Context())
except:
do something to ouptut the error
render 呼び出しが必要です。それ以外の場合、例外はまったくスローされません。
例外とその引数を印刷しようとしましたが、非常に限られた情報しか得られません。トレースバックも使用してみましたが、テンプレート内の行番号や何かを返すことはなく、Pythonコードで例外がスローされた場所にのみ返されます。また、Googleを使用しても何も見つかりませんでした.Djangoソースコードを検索すると、実際のエラーページがどこに生成されているのか疑問に思いました...
基本的に私の質問は次のとおりです。画像に表示されている情報を取得するにはどうすればよいですか?
編集 明確にするために: メールの送信中にこれらのテンプレートを使用できるように、ユーザーがテンプレートを作成できるようにしたいと考えています。Django テンプレート エンジンは既に存在するため、他のものではなくそれを使用することにしました。
テンプレート自体は、このスニペットと変数の独自の解析を使用して安全に作られています。これまでのところ、ユーザーへの有用なデバッグ メッセージを除いて、すべてが機能しています。これまでのところ、「テンプレートの解析中に問題が発生しました。予期しないブロックタグが拡張されました」(たとえば) だけです。これは、上記の画像のようになりたいと思います。