包含动态生成的内容

时间:2017-02-18 04:33:36

标签: python flask

在我的base.html的底部,我试图include另一个动态生成的.html文件。所以为了做到这一点,我调用了.js文件,该文件向该终点发出GET请求。看一看;

# _base.html
<!DOCTYPE html>
<html lang="en">
<head> ...
<script type=text/javascript src="{{url_for('static', filename='js/recent_posts.js') }}"></script>
</head>
<body>...
{% block content %}{% endblock %}
...
{% include 'recent_posts.html' %}
</body>
</html>

# recent_posts.js    
$(function () {
    $.ajax({
        url: '/recent_posts',
        type: 'GET'
    });
});

# view for recent_posts
...
@recentPosts_blueprint.route('/recent_posts', methods=['GET'])
def recent_posts():
    vacation = Vacation.query.all()
    return render_template('recent_posts.html', vacation=vacation)


# recent_post.html
...
<h3>Recent Posts</h3>
{{ vacation }}
...

当页面加载时,我只获取</h3>标签和文本而不是数据

为什么呢?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

因此,在没有重复代码的情况下,在阅读了一些文档之后,我找到了一个解决方案。我已将代码放在funcs.py下的函数中并添加到全局变量中。

def recent_posts():
    data = []
    data_list = []
    vacation = Vacation.query.all()
    return vacation

app.jinja_env.globals.update(recent_posts=recent_posts)

__init__.py我添加了func.py: from project.funcs import funcs所以现在我可以在{% set data = recent_posts() %}或其他任何地方_base.html进行操作运行该函数并将结果返回基础。