0

たとえば、Webインターフェイスにバグが見つかりました。私はfirebugを開き、要素とクラス、この要素のIDを発見します。それらによって、変数やタグなどを含むテンプレートを識別できます。どうすれば先に進んで、これらの変数がどの.pyファイルに入力されているかを明らかにできますか?

私はそれがLiftフレームワークでどのように機能するかを知っています:テンプレートを見つけたとき、スニペットにバインドされた属性を持つ要素があります。そのため、特定のスニペットに簡単に進んでコードを編集できます。

djangoではどのように機能しますか?たぶん、私は間違ったプロセスだと思います...それから私に正しいアルゴリズムを教えてください。

4

2 に答える 2

1

適切に設計されたdjangoでは、テンプレートを編集するだけで済みます。良いデザインはきれいな分離を提供します。開発者が何か変わったことをすることを余儀なくされた可能性があります...しかし、テンプレートを編集して何が起こるかを確認することを試みることができます(バックアップを最初に作成します)

于 2012-05-04T15:13:26.530 に答える
1

テンプレート変数の解像度を決定することは、すべてについてContextです。

  1. URLを使用して、view呼び出されているものを識別します。
  2. ビューの戻り値を見て、a)使用されているテンプレート、およびb)テンプレートがレンダリングされているときに使用されているコンテキストで渡されている値に注意してください。
  3. settings.pyのリストを見てくださいTEMPLATE_CONTEXT_PROCESSORS。これらは、テンプレートに渡されるコンテキストに値を追加するために自動的かつ目に見えない形で呼び出されるルーチンです。これは一種のManBehindtheCurtain™プロセスであり、知らない場合は本当につまずく可能性があります。
  4. コンテキストを変更している可能性のある、呼び出されているマジックテンプレートタグ(問題のテンプレート、拡張されたテンプレート、またはテンプレートを含むテンプレートのいずれか)があるかどうかを確認します。テンプレート{%expr%}で評価を行うことができるという古い学校のdjangoスニペットを使用する必要がある場合もありますが、使用されているという事実を強調するために、常に必要なポイントにできるだけ近い場所で使用します。

Djangoテンプレート変数の解決方法により{{foo.something}}、値または呼び出し可能なメソッドのいずれかになる可能性があることに注意してください。私はこの構文に深刻な問題を抱えていますが、それは彼らがそれを書いた方法です。

于 2012-05-04T15:41:26.080 に答える