app
from flask import Flask
from flask_script import Manager
from App.ext import db
from App.views import bp
app = Flask(__name__)
app.config.from_pyfile("settings.py")
db.init_app(app)
manager = Manager(app)
# 注册蓝图
app.register_blueprint(bp)
if __name__ == '__main__':
manager.run()
App.ext
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
settings
DEBUG = True
# 数据库
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:19970223@localhost:3306/sess"
SQLALCHEMY_TRACK_MODIFICATIONS = False
App.views
from datetime import timedelta, datetime
from flask import Blueprint, request, make_response, render_template, redirect
from App.models import User
bp = Blueprint("bp",__name__)
@bp.route("/login/",methods=['GET','POST'])
def login():
if request.method == "POST":
# 处理
username = request.form.get('username')
password = request.form.get('password')
print(username,password)
user = User.query.filter(User.username==username,User.password==password).first()
print(user)
if user: # 登录成功
# 写cookie
response = redirect("/")
# 设置cookie有效期是一天
response.set_cookie("username",username,max_age=3600*24)
dest = datetime.now() + timedelta(days=3)
# expires优先级高于max_age
response.set_cookie("username",username,expires=dest)
return response
else: # 登录失败
return redirect("/login/")
return render_template("login.html")
# 默认是get请求,如果有其他请求,应该在路由中指定methods
@bp.route("/",methods=['GET','POST'])
def index():
username = request.cookies.get('username')
if username:
return "你是合法用户"
else:
return "你是非法用户,请先登录"
# 退出登录
@bp.route("/logout/")
def logout():
response = make_response("退出登录")
# 删除指定cookie一个键值对
response.delete_cookie('username')
return response
@bp.route("/res/")
def handle_response():
# 手动生成响应对象
with open("static/1.jpeg",'rb') as fp:
content = fp.read()
res = make_response(content)
res.headers['Content-Type'] = "image/jpeg"
# 自定义响应对象
res = make_response("<h2>Hello world</h2>")
res.headers['hello'] = "world"
print(res.__dict__)
return res
# 自动生成响应对象
# 返回了内容和状态码
return "hello",200
App.models
from App.ext import db
class User(db.Model):
__tablename__ = 'user'
uid = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(30), nullable=False)
password = db.Column(db.String(128), nullable=False)
gender = db.Column(db.Integer)
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="{{ url_for('bp.login') }}" method="post">
用户名:<input type="text" name="username"> <br>
密码: <input type="password" name="password"> <br>
<input type="submit">
</form>
</body>
</html>
来源:CSDN
作者:weixin_40354992
链接:https://blog.csdn.net/weixin_40354992/article/details/104618177