本文主要是介绍176. Python语言 的 Flask框架项目 之 个人信息 模块的开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
个人信息 模块的开发
- 本章主题
- 关键词
- 登录装饰器
- 用户上传头像
- 存储方案
- 文件存储解决方案
- 七牛云平台
- 密钥管理
- 上传文件示例代码
- 用户上传头像接口设计
- 请求方式
- 请求参数:表单参数
- 响应结果
- 用户上传头像接口定义
- 修改用户名
- 修改用户名接口设计
- 请求方式
- 请求参数:表单参数
- 响应结果
- 修改用户名接口定义
- 总结小便条
本章主题
关键词
登录装饰器
def login_required(view_func):@functools.wraps(view_func)def wrapper(*args, **kwargs):# 判断用户的登录状态user_id = session.get("user_id")# 如果用户是登录的, 执行视图函数if user_id is not None:# 将user_id保存到g对象中,在视图函数中可以通过g对象获取保存数据g.user_id = user_idreturn view_func(*args, **kwargs)else:# 如果未登录,返回未登录的信息return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")return wrapper
用户上传头像
存储方案
- 保存到程序本地,磁盘满了要扩容
- 备份的问题
- 多机存储
- 多用户保存同一张图片,名字不一样,造成空间浪费
- 多用户上传同名文件,会出现覆盖之前的内容
文件存储解决方案
- 自己搭建文件存储系统
• FastDFS 快速分布式文件存储系统(电商)
• HDFS hadoop分布式文件系统 - 选择第三方服务
• 七牛云
七牛云平台
开发者中心:https://developer.qiniu.com/kodo/sdk/1242/python
密钥管理
上传文件示例代码
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth, put_file, etag
import qiniu.config
#需要填写你的 Access Key 和 Secret Key
access_key = 'Access_Key'
secret_key = 'Secret_Key'
#构建鉴权对象
q = Auth(access_key, secret_key)
#要上传的空间
bucket_name = 'Bucket_Name'
#上传后保存的文件名
key = 'my-python-logo.png'
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
#要上传文件的本地路径
localfile = './sync/bbb.jpg'
ret, info = put_file(token, key, localfile)
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
用户上传头像接口设计
请求方式
选项 | 方案 |
---|---|
请求方法 | POST |
请求地址 | /users/avatar |
请求参数:表单参数
参数名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
avatar | file | 是 | 用户头像 |
响应结果
响应结果 | 响应内容 |
---|---|
保存失败 | 响应错误提示 |
保存成功 | 返回当前页面 |
用户上传头像接口定义
@api.route("/users/avatar", methods=["POST"])
@login_required
# @api.before_request
def set_user_avatar():"""设置用户的头像参数: 图片(多媒体表单格式) 用户id (g.user_id)"""
修改用户名
修改用户名接口设计
请求方式
选项 | 方案 |
---|---|
请求方法 | PUT |
请求地址 | /users/name |
请求参数:表单参数
参数名 | 类型 | 是否必传 | 说明 |
---|---|---|---|
name | string | 是 | 用户名 |
响应结果
响应结果 | 响应内容 |
---|---|
保存失败 | 响应错误提示 |
保存成功 | 返回用户名 |
修改用户名接口定义
@api.route("/users/name", methods=["PUT"])
@login_required
def change_user_name():"""修改用户名"""
总结小便条
本篇文章主要讲了以下几点内容:
本章回顾暂时就到这了,如果还有点晕,那就把文章里所有引用的案例代码再敲几遍吧。拜拜~
这篇关于176. Python语言 的 Flask框架项目 之 个人信息 模块的开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!