2

私のテンプレートでは:

<div class="widget-content">
    {% render_widget settings %}
</div>

render_widgetsettingsパラメータを取るテンプレートタグです。

ここに、templatetagで定義されたメソッドのコードがあります。

def render_widget(settings):
   # some processing and then save into context
   t = get_template(#)      
  return t.render(Context(context))

上記のコードは正常に機能します!。コンテキストは特定のテンプレートに正常にレンダリングされています。

今、私はで新しいメソッドload_ajaxを作成しましたviews.py。この方法では、次のことが発生するはずです。

このload_ajaxメソッドは、contextt変数を取得し、を使用してatテンプレートをrender_widgetレンダリングする必要があります。contextt'Ajax'

私はDjangoとAjaxの初心者です。私は何をすべきか ?

更新しました!

load_ajaxメソッド:

def load_ajax(request):
from myapp.templatetags.file_want_import import render_widget
if request.ajax:
    # some code and render to the template with below lines
return direct_to_template(request, t,
                          extra_context=context)

上記Contextであり、メソッドtから取得する必要があります。render_widget

4

1 に答える 1

0

テンプレート タグがどのように機能するかを誤解して、ロジック ループに陥ってしまいました。

  • あなたは応答のためにビューを呼び出しています
  • あなたのビューは、テンプレートタグがそれにコンテキストを与えることを期待しています
  • ただし、テンプレートタグはコンテキストを提供するのではなく、受け取ることが期待されています

最初からやり直して、テンプレートタグを使用しないでください:

  • ビューを呼び出して応答する
  • テンプレートをレンダリングするために必要なすべてのデータと一緒にコンテキストを配置します(結局のところ、それは単なる辞書です)
  • テンプレートをレンダリングして返す

ビューですべてのデータをまとめて収集し、テンプレートをレンダリングする方が簡単です。テンプレート タグが必要な理由は明確ではありません。いくつかの設定をレンダリングしたい場合は、それらをコンテキストの一部としてテンプレートに渡すだけです。例えば:

ビュー.py:

ctx = { "setting_var": settings.some_var }
return render_to_response(... context=ctx)

テンプレート:

<div>
    {{ setting_var }}
</div>
于 2012-06-19T02:01:51.250 に答える