完成登录功能,用session记住用户名

from flask import Flask,render_template,request,redirect,url_for
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)
    nickname = db.Column(db.String(20))

db.create_all()
# user=User(username='mis1234',password='111111')
# db.session.add(user)
# db.session.commit()


@app.route('/')
def base():
    return render_template("base.html")


@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template("denglu.html")
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        user = User.query.filter(User.username == username).first()
        if user:
            if user.password == password:
                return redirect(url_for('base'))
            else:
                return '密码错误'
        else:
            return '用户名不存在'



@app.route('/regist/', methods=['GET', 'POST'])
def zhuce():
    if request.method == 'GET':
        return render_template("zhuce.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 '用户名已存在'
        else:
            user = User(username=username, password=password, nickname=nickname)
            db.session.add(user)  # 数据库,添加操作
            db.session.commit()
            return redirect(url_for('login'))

@app.route('/fabu/')
def fabu():
    return  render_template('question.html')

if __name__=='__main__':
    app.run(debug=True)
{% extends'fumoban.html' %}
<html>
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    {% block head %}
    <link  href="../static/css/zhuce.css" rel="stylesheet" type="text/css">
    <script src="../static/js/denglu.js"></script>
    {% endblock %}
</head>

<body>
{% block main %}
  <div><h1>用户登录</h1></div>
    <form action="{{ url_for('login') }}" method="post"></form>
  <div class="aa"><script>document.write("loading....")</script>
    </div>

<div class="flex-container">
 <form class="form" method="post" action="{{ url_for('login') }}">
    <div class="box">
        <div class="input_box">
            登录 <input id="uname" name='username'type="text" placeholder="输入用户名">
        </div>
        <br>
        <div class="input_box">
            密码 <input id="upass" name='password'type="password" placeholder="输入密码">
        </div>
        <br>
        <div id="error_box"><br></div>
        <div class="input_box">
            <button onclick="fnLogin()">登录</button>
        </div>
    </div>
 </form>
</div>
{% endblock %}
</body>
</html>
原文地址:https://www.cnblogs.com/hxl316/p/7881138.html