我正在尝试在用户到达页面末尾时动态加载新内容。我的网络应用程序使用 gae-python。我使用 ajax 和 jquery 来更新 html 中的查询。
HTML:
{% block content %}
<div class="hero-unit special-padding">
{% for h in hots %}
{{ h.imageid.get().render() | safe }}
{% endfor %}
{% include 'pager.html' %}
</div>
{% endblock %}
Jquery 和 AJAX:
$(window).scroll(function () {
if ($(window).scrollTop() + $(window).height() > $('.hero-unit').height() - 100 && !isLoading) {$('#loadpage').click(function() {
var page=$('#loadpage').attr('name');
$.ajax({
type: "POST",
dataType:"json",
url: '/loadpage',
data : {'page': page},
success: updatehtml,
});
return false;
});
});
function updatehtml(e){
for (var i = 0; i < e.length; i++) {
var html= "{{ "+e[i]['imageid']+".get().render() | safe }}";
$('.hero-unit').append(html);
}
}
我序列化数据存储实体并作为 json 传递。它将使用
更新 HTML{{ datastoreKey.get().render()|safe }}
现在我希望 jinja2 框架在 ajax 更新我的 HTML 时调用 python 函数 .render()
。
我知道它可以通过用 javascript 编写整个 HTML 代码来替代,但我想知道是否有其他更简单/更好的方法来做到这一点。
最佳答案
function updatehtml(e){
for (var i = 0; i < e.length; i++) {
var html= "{{ "+e[i]['imageid']+".get().render() | safe }}";
$('.hero-unit').append(html);
}
}
仅在有人请求您的 URI 时呈现一次。
因此行 var html= "{{ "+e[i]['imageid']+".get().render() | safe }}";
将被渲染并且包含对您的 porpuse 的无效渲染。
为了做到这一点,您需要使用 html 从您的 lodapage 处理程序进行响应。
只需“移动/采用”html= "{{ "+e[i]['imageid']+".get().render() | safe }}";
到您的加载页面处理程序,然后用一个简单的模板文件或内联渲染它,并使它成为一个 html 响应。 AJAX 请求将能够获取 html 格式的数据,然后您可以轻松地附加它。您必须小心 id,不要让它们依赖于 html,而是依赖于模型/id,以免重复等。
之后,您可以直接应用和 html,您可以从 e
参数轻松获取
关于python - 使用 AJAX 在 Python 的 jinja2 框架中动态加载行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171887/