登录之后更新导航

1.用上下文处理器app_context_processor定义函数

  1. 获取session中保存的值
  2. 返回字典
# 上下文处理器
@app.context_processor
def mycontext():
    usern=session.get('user')
    if usern:
        return {'username':usern}
    else:
        return {}

2.在父模板中更新导航,插入登录状态判断代码。、

  1. 注意用{% ... %}表示指令。
  2. {{ }}表示变量
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}首页</title>
    <!-- 新 Bootstrap 核心 CSS 文件 -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="{{ url_for('static',filename='js/switch.js') }}"></script>
    <link rel="stylesheet"  type="text/css" href="{{ url_for('static',filename='css/base.css') }}">

{% block head %}{% endblock %}
</head>
<body id="myBody">
<nav class="navbar">
    <img src="{{ url_for('static',filename='images/8-1306061335461b.jpg') }}" alt="" width="50px">
    <a href="{{ url_for('index') }}">首页</a>
    <a href="{{ url_for('questions') }}">发布提问</a>
    <input type="text" name="title" required lay-verify="required" placeholder="请输入搜索内容" autocomplete="off"
           class="layui-input">
    <button class="seek" style="padding-left: 10px;" type="submit">搜索</button>
{% if username %}
    <a href="#">{{ username }}</a>
    <a href="{{ url_for('logout') }}">注销</a>
    {% else %}
    <a class="login" href="{{ url_for('login') }}">登录</a>
    <a class="enroll" href="{{ url_for('enroll') }}">注册</a>
{% endif %}
    <select class="navigate">
        <option>学校概况</option>
        <option>教学单位</option>
        <option>管理服务</option>
        <option>招生就业</option>
        <option>国际教育</option>
    </select>
    <img id="myOnOff" onclick="mySwitch()" src="http://www.runoob.com/images/pic_bulbon.gif" width="25px">
</nav>



{% block main %}{% endblock %}
<p>{{ username }}contextx</p>
</body>

<footer>
    <div class="footer_box">
        版权@zhuangyuan
    </div>
</footer>
</html>

3.完成注销功能。

  1. 清除session
  2. 跳转
#注销
@app.route('/logout/')
def logout():
    session.clear()
    return redirect(url_for('index'))# 清除所有数据返回到首页

网页运行结果:

注销后运行结果:

数据库数据运行结果:

原文地址:https://www.cnblogs.com/iamzhuangyuan/p/7889081.html