flask 页面结构如下:
视图页面
from flask import render_template
test= Blueprint('test', __name__)
@test.route('/test/')
def main(test):
data = {
"page_title": "abc",
}
return render_template('/test.html', data=data)
test.html,引用宏模板head.html,设置with context ,可以访问全局参数。
{% import '/macro/head_macro.html' as head_macro with context %}
{{ head_macro.main(page_title = data['page_title']) }}
<div>sample</div>
head_macro.html 页面头部宏模板
如果未登陆显示登陆注册按钮,否则显示用户id
{% macro main( page_title = "") %}
<ul>
{% if not session.get('user')%}
<li><a href="/login/">登陆</a> </li>
<li><a class="nav-link" href="/register/">注册</a></li>
{% else %}
<li><a href="#" >user_id:{{session['user']['user_id']}}</a></li>
{% endif %}
</ul>
{% endmacro %}
现在碰到问题,在宏模板中判断session.get('user'),经常失效,无法访问,感觉有点问题。后来经过这种折腾,尝试在试图页面修改为:
from flask import render_template
test= Blueprint('test', __name__)
@test.route('/test/')
def main(test):
data = {
"page_title": "abc" + session['user']['user_id'],
}
return render_template('/test.html', data=data)
就是把session带入到页面中,好像jinga2中就没有出现访问不session情况。但这只是测试行为,而且如果没有登陆,直接使用 session['user']会导致页面报错。
那有什么方法让jinga2中可以正常访问session呢?
找到问题所在了:
https://blog.csdn.net/Wiken4/article/details/116354477
先判断session['user']是否存在,存在的情况下,再获取['user_id']的值。
这篇文章:Flask操作session 也许有你想要的答案,你可以看看