python - 更改 Jinja 子模板以响应 HTML 事件

标签 python google-app-engine dom jinja2

假设我有一个基本模板base.html:

<!DOCTYPE html>
<html>
<body>
    <div id="content">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

我有几个可能的 content 子模板,例如 child1.htmlchild2.html 等。

是否可以在它们之间切换以响应页面上的 HTML 事件(例如使用 Javascript)? (我的动机是让用户点击页面上的按钮来改变页面样式。)

我在 Google App Engine 上使用 Jinja2 和 Python。

显然模板是由服务器端脚本设置的,所以这应该是不可能的,但我希望有人以前想做类似的事情。

最佳答案

您正确地注意到,当 JavaScript 在浏览器中运行时,jinja2 模板在服务器端呈现。

因此 JavaScript 没有直接机会影响模板的呈现方式。

可能有一些解决方案,例如

生成两个版本的内容

生成隐藏的它们,让您的 JavaScript 仅显示其中之一

AJAX - 从 JavaScript 中提取适当的内容

JavaScript 将检测内部内容,并使用 AJAX 调用提取所需内容。

关于python - 更改 Jinja 子模板以响应 HTML 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088921/

相关文章:

python - Pandas groupby 给出任何非 nan 值

google-app-engine - Appengine with Go : Is there a http. Handle prehook 或类似的东西?

javascript - "innerHTML += ..."与 "appendChild(txtNode)"

python - 如何为我的类(class)实现 __cmp__() 和 __hash__() ?

python : Object not created

javascript - 如何将电子邮件添加到 Stripe 自定义收据表单(错误 : Received unknown parameter: email)

google-app-engine - 出于计费目的,ndb 缓存读取操作是否仍算作数据存储读取操作?

javascript - DOM 脚本 : create elements and position them on one line

javascript - Angular2 应用程序在单击事件时跳转到页面顶部

python - 使用 Dialogflow、FB Messenger 和 Python 发起对话