2

在我的模板中:

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

render_widget是一个settings带有参数的模板标签。

这里我们有模板标签中定义的方法代码:

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

上面的代码工作正常!上下文已成功呈现给给定模板。

现在我load_ajaxviews.py. 在这种方法中应该发生以下事情:

load_ajax方法应该从contextandt变量中获取并使用 .render_widget渲染contextatt模板'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)

以上Contextt应该来自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 回答