【问题标题】:onclick load {% include 'test.html' %}onclick 加载 {% 包括 'test.html' %}
【发布时间】:2014-08-26 08:40:10
【问题描述】:

我想在用户点击一个元素时加载 Jinja2 模板字符串。 例如我有这样的标签:

 <div class="one"><a href="#one">One</a></div>
 <div class="two"><a href="#two">Two</a></div>
 <div class="three"><a href="#three">Three</a></div>

只有在点击 One 之后,我才必须加载下面的字符串:

{% include 'one.html' %}

点击二后,这个字符串必须被加载:

{% include 'two.html' %}

等等。 我该如何处理这个问题?点击时动态加载内容

【问题讨论】:

  • 请记住,JavaScript 发生在浏览器(客户端)中,如果我没记错的话,Jinja2 是在服务器上发生的 python 十电镀。通过 JavaScript 显示模板字符串将一事无成。您需要在提供页面时加载所有项目,然后在点击时显示它们,或者您需要一个 Ajax 解决方案来获取模板结果并在点击时插入。
  • 感谢 sirReal,是的,你是对的,我正在使用 python-Flask,它不允许实现该方法。唯一的事情是,我只想在单击 div 时执行像 {% include 'one.html' %} 这样的 Jinja2 字符串,正如你所说,我猜 Agax 可以克服这个问题。谢谢
  • 我的荣幸。我提供了一个稍微详细一点的答案

标签: javascript jquery python flask jinja2


【解决方案1】:

请记住,JavaScript 发生在浏览器(客户端)中,而 Jinja2 是基于 python 的模板,它将发生在服务器端。通过 JavaScript 显示模板字符串不会达到您想要的结果。似乎有两种方法可以实现您想要的。

一种选择是在页面最初加载时输出模板的结果,然后通过一些 javascript 行为显示它。有很多 jQuery 插件可以实现这个结果,你可以看看一个例子是Bootstrap Tabs

如果您不希望在首次加载页面时生成所有模板结果,另一种选择是通过 ajax 加载模板的结果。需要为 ajax 请求提供所需 jinja2 模板的结果,然后可以将其输出到您的页面中。 jQuery's load 提供了一种简单的方法来做到这一点。

【讨论】:

    【解决方案2】:

    您必须使用一些 JavaScript 来实现。

    一种解决方案是使用jQuery加载http://api.jquery.com/load/

    【讨论】:

    • 亲爱的卡米尔,感谢您的回复,但加载方法在这里不起作用,因为我使用的是 python 微框架 Flask,它不允许通过 url 加载 html 文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多