Python全系列 教程
3567个小节阅读:5929.9k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
使用flask_restful实现
安装flask_restful模块
xxxxxxxxxx
pip install flask_restful==0.3.9
在flask_shop/user/__init__.py
中增加代码,注册api对象
xxxxxxxxxx
from flask import Blueprint
from flask_restful import Api
# 创建蓝图对象
user_bp = Blueprint('user', __name__,url_prefix='/user')
# 创建Api对象
user_api = Api(user_bp)
# 导入视图
from . import views
在flask_shop/user/views.py
中增加代码
xxxxxxxxxx
import re
from flask import request
from flask_restful import Resource
# pip install flask_restful==0.3.9
from flask_shop.user import user_bp,user_api
from flask_shop import models,db
# 登录功能
@user_bp.route('/login/', methods=['POST'])
def login():
# 获取用户名
# name = request.form.get('name') # content-type: application/x-www-form-urlencoded
name = request.get_json().get('name') # content-type: application/json
# 获取密码
pwd = request.get_json().get('pwd')
# 判断是否传递数据完整
if not all([name, pwd]):
return {'status': 400, 'msg': '参数不完整'}
else:
# 通过用户名获取用户对象
user = models.User.query.filter(name == name).first()
# 判断用户是否存在
if user:
# 判断密码是否正确
if user.check_password(pwd):
return {'status': 200, 'msg': '登录成功'}
return {'status': 400, 'msg': '用户名或密码错误'}
class Users(Resource):
def get(self):
pass
def post(self):
# 注册用户
# 接收用户信息
name = request.get_json().get('name')
pwd = request.get_json().get('pwd')
real_pwd = request.get_json().get('real_pwd')
# 验证数据的合法性
if not all([name, pwd, real_pwd]):
return {'status': 400, 'msg': '参数不完整'}
# 判断两次密码是否一致
if pwd != real_pwd:
return {'status': 400, 'msg': '两次密码不一致'}
# 判断用户名是否合法
if len(name)<2:
return {'status': 400, 'msg': '用户名不合法'}
# 接收手机号和邮箱
phone = request.get_json().get('phone')
email = request.get_json().get('email')
# 昵称
nick_name = request.get_json().get('nick_name')
if not re.match(r'^1[3456789]\d{9}$', phone):
return {'status': 400, 'msg': '手机号不合法'}
if not re.match('^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', email):
return {'status': 400, 'msg': '邮箱不合法'}
try:
# 判断用户名是否存在
user = models.User.query.filter(name == name).first()
if user:
return {'status': 400, 'msg': '用户名已存在'}
except Exception as e:
print(e)
# 创建用户对象
user = models.User(name=name, password=pwd, phone=phone, email=email, nick_name=nick_name)
# 保存到数据库
db.session.add(user)
db.session.commit()
return {'status': 200, 'msg': '注册成功'}
user_api.add_resource(Users, '/users/')
在config.py
文件增加代码,解决中文乱码问题
xxxxxxxxxx
class Config:
# 设置参数
MYSQL_DIALECT = 'mysql'
MYSQL_DRIVER = 'pymysql'
MYSQL_USERNAME = 'root'
MYSQL_PASSWORD = '123'
MYSQL_HOST = '192.168.31.151' # localhost/127.0.0.1
MYSQL_PORT = 3306
MYSQL_DB = 'flask_shop'
MYSQL_CHARSET = 'utf8mb4'
# 数据库链接字符串URI
SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DRIVER}://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
# 数据盐
SECRET_KEY = os.urandom(16)
# 设置JSON数据不使用ASCII编码
JSON_AS_ASCII = False
RESTFUL_JSON = {'ensure_ascii': False}