美文网首页
Flask之输出字段

Flask之输出字段

作者: 小小运维 | 来源:发表于2018-04-09 00:07 被阅读0次
1. 首先我们创建一个User类
from app import db
from werkzeug.security import generate_password_hash, check_password_hash


class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))

    # 定义一个属性,默认是读取的操作,这里报错,意思是不可读
    @property
    def password(self):
        raise AttributeError('password is not readable attribute')

    # 定义上面那个password属性的可写属性,这里默认换算成哈希值,然后保存下来
    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    # 校验传入的密码和哈希值是否是一对儿
    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return "<User {}>".format(self.username)
2. 我们使用marshal_with来将输出的内容格式化
from flask_restful import Api, Resource, reqparse, fields, marshal_with
from app.api_1_0 import api_1_0
from app.models.user import User

api_user = Api(api_1_0)


class PasswordItem(fields.Raw):
    def format(self, value):
        return value


resource_fields = {
    'id': fields.String,
    'username': fields.String,
    'password_hash': fields.String
}


class UserGetApi(Resource):
    @marshal_with(resource_fields, envelope='users')
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('username', type=str, required=True, help="username cannot be blank!", location='args')
        args = parser.parse_args()
        username = args.get('username')
        parser.remove_argument('username')
        u = User.query.filter_by(username=username).all()
        return u


api_user.add_resource(UserGetApi, '/userget', endpoint='userget')

3. 验证输出结果
[root@test01 ~]# curl -H "Content-Type:application/json" -X GET http://192.168.1.59/api/userget?username=liuxin
{
    "users": [
        {
            "id": "1",
            "username": "liuxin",
            "password_hash": "pbkdf2:sha256:50000$PZLgoIbb$abf79799520658a7bd2b0a82e6f279ed209fa2f94017d68d288c758421a46102"
        }
    ]
}

相关文章

  • Flask之输出字段

    1. 首先我们创建一个User类 2. 我们使用marshal_with来将输出的内容格式化 3. 验证输出结果

  • Flask-RESTful 输出字段

    参考资料:https://flask-restful.readthedocs.io/en/latest/field...

  • flask_sqlalchemy使用

    postgresql—flask-sqlalchemy字段对应 主键默认使用uuid 字段不为空 设置外键

  • Python Web框架 Flask - Flask表单、项目结

    Flask表单 Flask项目开发中针对提交表单的校验,可以使用Flask-WTF扩展库进行快速的字段校验 安装F...

  • Flask

    Flask Introduction PythonWEB框架之Flask Flask Back-end Manag...

  • Day20-flask-login和flask-wtf

    一、表单验证 前言 在Flask项目开发中针对提交表单的校验,可以使用Flask-WTF扩展库进行快速的字段校验,...

  • 03-Flask之数据模型

    一、Flask-Migrate插件(模型迁移) 二、SQLAlchemy数据定义 字段 约束 三、SQLAlche...

  • 03-Flask之数据模型

    一、Flask-Migrate插件(模型迁移) 二、SQLAlchemy数据定义 字段 约束 三、SQLAlche...

  • 03-Flask之数据模型

    一、Flask-Migrate插件(模型迁移) 二、SQLAlchemy数据定义 字段 约束 三、SQLAlche...

  • 03-Flask中数据模型

    一、Flask-Migrate插件(模型迁移) 二、SQLAlchemy数据定义 字段 约束 三、SQLAlche...

网友评论

      本文标题:Flask之输出字段

      本文链接:https://www.haomeiwen.com/subject/dahvhftx.html