在我的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>
标签和文本而不是数据
为什么呢?我怎么能这样做?
答案 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
进行操作运行该函数并将结果返回基础。