Python 3.5.1実行ファイルと可変スコープ
コードと画像をご覧ください。
これはいくつかのDjangoコードですが、質問はPythonに関するものです。
さて、私はエラーを取得:
Exception Value:
name 'objects' is not defined
Exception Location:
/home/michael/workspace/pharchive/pharchive/general/templatetags/md_aux.py in get_aux_info, line 17
ライン17は、コンテキスト=コンテキスト({:オブジェクトの "オブジェクト"})です。写真ではそれが見えます。
少し上にオブジェクトを追加しようとしました。しかし、それは役に立たなかった。この場合、オブジェクトは本当に空でした。だから、私はそれをコメントアウトした。
さて、スクリーンショットでは、ブレークポイントで停止してもらえます。オブジェクトvarは実際にこのコンテキストでアクセス可能であることがわかります。それには何かが含まれています。
とにかく、私は可変スコープで立ち往生しています。
私は分かりません: 1.なぜオブジェクト= []は私を助けませんでした。 2.オブジェクトにアクセスできるのに対して、なぜこのエラーが発生するのですか。
ここに私にキックを与えてもらえますか?文字列としてコードを構築し、exec
utingより
@register.simple_tag
def get_aux_info(master_document, aux_type):
md = MasterDocument.objects.get(pk=master_document)
template = get_template("general/md_tags.html")
#objects = []
code = "objects = md." + aux_type +"s.all()"
exec(code)
context = Context({"objects": objects})
return template.render(context)
http://s019.radikal.ru/i636/1606/d5/a646b7fe8941.png
なぜあなたは 'exec'を使用していますか? 'objects = getattr(md、aux_type + 's')。all()'はその仕事をしますか? – jonrsharpe
私は自分自身でexecに対処することができました。まあ、私は私の武器に入っていない。今はそうです。ありがとうございました 。あなたが答えとしてそれを形作るならば、私はそれをうれしく受け入れます。 – Michael