zoukankan      html  css  js  c++  java
  • 登录之后更新导航


          1. 用上下文处理器app_context_processor定义函数
            1. 获取session中保存的值
            2. 返回字典
          2. 在父模板中更新导航,插入登录状态判断代码。、
            1. 注意用{% ... %}表示指令。
            2. {{ }}表示变量
          3. 完成注销功能。
            1. 清除session
            2. 跳转
    py:
    from flask import Flask, render_template, request, redirect, url_for, session
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    app = Flask(__name__)
    app.config.from_object(config)
    db = SQLAlchemy(app)
    
    
    class User(db.Model):
        __tablename__ = 'user'
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        username = db.Column(db.String(20), nullable=False)
        password = db.Column(db.String(20), nullable=False)
    
    
    # db.create_all()
    @app.route('/')
    def daohang():
        return render_template('daohang.html')
    
    
    @app.route('/login/', methods=['GET', 'POST'])
    def login():
        if request.method == 'GET':
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            # nickname=request.form.get('nickname')
            user = User.query.filter(User.username == username).first()
            if user:
                session['user']=username
                session.permanent=True
                return redirect(url_for('daohang'))
            else:
                return 'error username or password'
            # if user:
            #     return 'username existed'
            # else:
            #     user=User(username=username,password=password)
            #     db.session.add(user)
            #     db.session.commit()
            return redirect(url_for('daohang'))
    
    @app.context_processor
    def mycontext():
        usern=session.get('user')
        if usern:
            return {'username':usern}
        else:
            return {}
    
    @app.route('/logout/')
    def logout():
        session.clear()
        return redirect(url_for('regist'))
    
    @app.route('/regist/', methods=['GET', 'POST'])
    def regist():
        if request.method == 'GET':
            return render_template('regist.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            # nickname=request.form.get('nickname')
            user = User.query.filter(User.username == username).first()
            if user:
                return 'username existed'
            else:
                user = User(username=username, password=password)
                db.session.add(user)
                db.session.commit()
                return redirect(url_for('login'))
    
    
    @app.route('/biaoqian/')
    def biaoqian():
        return render_template('biaoqian.html')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    首页.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}{% endblock %}首页</title>
        <link type="text/css" rel="stylesheet" href="{{ url_for('static',filename='/css/index.css') }}">
        <script src="{{ url_for('static',filename='js/moonlight.js') }}"></script>
        {% block head %}{% endblock %}
    </head>
    <body id="myBody">
    <nav>
        <img src="http://cdn2.jianshu.io/assets/web/logo-58fd04f6f0de908401aa561cda6a0688.png" width="40px">
        <a href="{{ url_for('daohang') }}">首页</a>
        <a href="http://www.jianshu.com/">下载app</a>
        <input type="text" name="search">
        <button type="submit">搜索</button>
    {% if username %}
        <a href="#">{{ username }}</a>
        <a href="{{ url_for('logout') }}">注销</a>
    {% else %}
        <a href="{{ url_for('login') }}">登录</a>
        <a href="{{ url_for('regist') }}">注册</a>
    {% endif %}
        <a href="{{ url_for('biaoqian') }}">发布问答</a>
        <img id="myOnOff" src="http://www.runoob.com/images/pic_bulbon.gif" onclick="mySwitch()" width="20px">
    </nav>
    {% block main %}{% endblock %}
    <p>{{ username }}contextx</p>
    </body>
    </html>

  • 相关阅读:
    TVB西游记-观音的眼泪化作金河送唐僧回长安
    天下没有免费的午餐是什么意思
    什么样的经历、体验或者行为等能彻底的改变一个人
    看人先看什么
    python字符串中查找指定子字符串
    字符串的分隔及连接
    流媒体服务器音视频直播平台的开发为什么需要CDN?
    微信公众号小程序如何做流媒体视频直播?
    搭建专属于自己的视频流媒体直播/点播平台都需要注意哪些事项?
    音视频流媒体服务器的虚拟直播推流失败断流无法播放如何解决?
  • 原文地址:https://www.cnblogs.com/chenhuafei/p/7889097.html
Copyright © 2011-2022 走看看