from flask import Flask, session
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
api = Api(app)
app.secret_key = 'fdafsdafsafsafsa'
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 't_user'
id =db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64))
mobile = db.Column(db.String(64))
def to_dict(self):
return {
'id':self.id,
'name':self.name,
'mobile':self.mobile,
}
class Login(Resource):
def post(self):
parser = RequestParser()
parser.add_argument('mobile',required=True,location="args")
parser.add_argument('code', required=True, location="args")
req = parser.parse_args()
if req.code !='123456':
return {'msg':"code_error"}
user = User.query.filter(User.mobile==req.mobile).first()
if not user:
user = User(name=req.mobile,mobile=req.mobile)
db.session.add(user)
db.session.commit()
session['uer_id'] = user.id
return {'msg': '登录成功'}
class Info(Resource):
def get(self):
user_id = session.get('user_id')
if not user_id:
return {'message': '请先登录'}, 401
user = User.query.filter(User.id==user_id).first()
return user.to_dict()
api.add_resource(Login,'/login')
api.add_resource(Info,'/info')
if __name__ == '__main__':
app.run(debug=True)
装饰器版
from flask import Flask, session, g
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
api = Api(app)
app.secret_key = 'fdafsdafsafsafsa'
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 't_user'
id =db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64))
mobile = db.Column(db.String(64))
def to_dict(self):
return {
'id':self.id,
'name':self.name,
'mobile':self.mobile,
}
class Login(Resource):
def post(self):
parser = RequestParser()
parser.add_argument('mobile',required=True,location="args")
parser.add_argument('code', required=True, location="args")
req = parser.parse_args()
if req.code !='123456':
return {'msg':"code_error"}
user = User.query.filter(User.mobile==req.mobile).first()
if not user:
user = User(name=req.mobile,mobile=req.mobile)
db.session.add(user)
db.session.commit()
session['user_id'] = user.id
return {'msg': '登录成功'}
def login_requried(func):
def wrapper(*args,**kwargs):
user_id = session.get('user_id')
if not user_id:
return {'message': '请先登录'}, 401
user = User.query.filter(User.id==user_id).first()
g.user = user
return func(*args,**kwargs)
return wrapper
class Info(Resource):
method_decorators = {'get':[login_requried]}
def get(self):
return g.user.to_dict()
api.add_resource(Login,'/login')
api.add_resource(Info,'/info')
if __name__ == '__main__':
app.run(debug=True)
before_request和装饰器版
from flask import Flask, session, g
from flask_restful import Api, Resource
from flask_restful.reqparse import RequestParser
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
api = Api(app)
app.secret_key = 'fdafsdafsafsafsa'
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 't_user'
id =db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64))
mobile = db.Column(db.String(64))
def to_dict(self):
return {
'id':self.id,
'name':self.name,
'mobile':self.mobile,
}
class Login(Resource):
def post(self):
parser = RequestParser()
parser.add_argument('mobile',required=True,location="args")
parser.add_argument('code', required=True, location="args")
req = parser.parse_args()
if req.code !='123456':
return {'msg':"code_error"}
user = User.query.filter(User.mobile==req.mobile).first()
if not user:
user = User(name=req.mobile,mobile=req.mobile)
db.session.add(user)
db.session.commit()
session['user_id'] = user.id
return {'msg': '登录成功'}
@app.before_request
def before_request():
user_id = session.get('user_id')
user = User.query.filter(User.id == user_id).first()
g.user =user
def login_requried(func):
def wrapper(*args,**kwargs):
if not g.user:
return {'message': '请先登录'}, 401
return func(*args,**kwargs)
return wrapper
class Info(Resource):
method_decorators = {'get':[login_requried]}
def get(self):
return g.user.to_dict()
api.add_resource(Login,'/login')
api.add_resource(Info,'/info')
if __name__ == '__main__':
app.run(debug=True)