模板继承中的变量从何而来?
Posted
技术标签:
【中文标题】模板继承中的变量从何而来?【英文标题】:Where do the variables in template inheritance come from? 【发布时间】:2011-09-21 15:06:18 【问题描述】:所以根据我从模板继承中读到的内容,假设你有
base.html
content.html
content_view.py
在 content_view.py 中有一个函数,其 template_name="content.html" 和 content.html 扩展了 base.html。因此 content_view.py 中的函数返回的 locals() 被传递到 content.html 中,并且由于 content.html 扩展了 base.html,因此 locals() 也被传递到 base.html 中。
首先这是正确的吗?
第二,有没有办法将更多没有被content_view.py中的函数初始化的变量传递到base.html中?
第三,信息流总是:urls.py -> views.py -> 模板,urls.py -> views.py -> 模板 -> views.py -> 模板是否可能?如果是的话,你如何编码重定向?
非常感谢!
【问题讨论】:
其实这个问题不是模板继承特有的,因为模板中可用的变量是相同的,无论你是否继承...... 【参考方案1】:首先这是正确的吗?
不,locals()
不会从视图传递到模板。
传递给模板的变量在调用render
或render_to_response
时在dictionary
参数中指定,从context processors 添加更多数据。您也可以稍后使用custom built template tag 向上下文添加更多变量。
【讨论】:
我的意思是当我说 locals() 从视图传递给模板时,视图函数将返回 render_to_response(template_name, locals(), context_instance=RequestContext(request)),当模板匹配 locals() 中的变量 django 魔术发生了,这不是将 locals() 从视图传递到模板吗? 如果您通过locals()
,您将在模板中获得locals()
。要添加更多内容,您可以将其导入视图模块并将其添加到字典中,或者使用上下文处理器或自定义模板标签。以上是关于模板继承中的变量从何而来?的主要内容,如果未能解决你的问题,请参考以下文章