写一个flask应用程序,实现登录用户名校验,使用sqlalchemy,mysql ,orm,不使用login_from
时间: 2024-03-10 17:47:59 浏览: 15
好的,下面是一个基本的Flask应用程序,实现了用户名登录校验的功能,使用了SQLAlchemy和MySQL数据库以及ORM:
```python
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 配置MySQL数据库连接信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost:3306/dbname'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.secret_key = 'your secret key'
db = SQLAlchemy(app)
# 定义User模型类
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), nullable=False)
password = db.Column(db.String(50), nullable=False)
def __repr__(self):
return '<User %r>' % self.username
# 定义登录页面的路由
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username, password=password).first()
if user:
# 如果用户信息正确,将用户名存入session中
session['username'] = user.username
return redirect(url_for('index'))
else:
return render_template('login.html', error='用户名或密码错误')
return render_template('login.html')
# 定义主页的路由
@app.route('/')
def index():
if 'username' in session:
# 如果已经登录,显示欢迎信息
return '欢迎,' + session['username']
else:
# 如果未登录,跳转到登录页面
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
```
这个应用程序中,我们定义了一个User模型类,用于映射数据库中的users表。在/login路由中,我们通过获取POST请求中的用户名和密码,查询数据库中是否存在对应的用户信息。如果存在,将用户名存入session中,然后跳转到主页。如果不存在,返回登录页面并显示错误信息。在/index路由中,我们判断session中是否存在用户名,如果存在,显示欢迎信息,否则跳转到登录页面。