0

目前 render_to_response 返回一个包含 html 的 HttpResponse 对象,但是有没有办法只从模板、字典和视图中呈现 HTML ?

注意:我想这样做的原因是我可以将 django 视图相互嵌套并以这种方式包含它们的值,而不是通过模板包含包含

IE:

菜单.html:

<div>menu {{ text }}</div>

我要这个:

模板.html:

<div >...{{ menu }} </div>

看法

def menu(request, ...):
    # do menu variable calculations here
    # returned html string rendered from template, request, kwargs, and variables    

def base(request, ...):
    menu = menu(request, ...) # rendered html for menu values
    render_to_response("template.html", context={"menu":menu})

而不是:

模板.html

<div>{% include menu.html %}</div>

看法

def base(request, ...):
    # calculate menu variable values here
    render_to_response("template.html", context=dictionary_of_menu_items)
4

2 回答 2

0

我想你可以使用django.template.loader.render_to_string来生成你的“菜单”html。这将返回一个带有已评估 HTML 的字符串。

然后,在您的 中template.html,您应该在评估模板变量safe时使用过滤器。menu

<div>{{menu|safe}}</div>
于 2013-05-18T09:31:56.900 回答
0

当然还有:render_to_response是一个快捷方式,你可以直接在模板上调用render。这在本教程以及其他地方进行了描述。

template = loader.get_template('template.html')
context = Context(dictionary_of_items)
rendered = template.render(context)

但是,对于您的用例,我认为包含标签可能更合适。

于 2013-05-18T09:28:08.980 回答