python - 使用参数时,flask-restplus 产生“关键字参数‘严格’的多个值”
问题描述
我正在使用 flask-restplus-patched(flask-restplus + flask-marshmallow 支持)开发 REST API。以https://github.com/frol/flask-restplus-server-example为例,一切进展顺利,直到我尝试向我的 add_user 函数添加参数。我的代码如下。
用户.py
from flask_restplus_patched import Resource, Namespace
from flask_restplus_patched._http import HTTPStatus
from database.models import db, User
from . import schemas, parameters
api = Namespace('user', description='User related operations')
@api.route('/')
class Users(Resource):
@api.doc('list_users')
@api.response(schemas.BaseUserSchema(many=True))
def get(self):
return User.query.all()
@api.parameters(parameters.AddUserParameters())
@api.response(schemas.DetailedUserSchema())
@api.doc('add_user')
def post(self, args):
new_user = User(**args)
db.session.add(new_user)
db.session.commit()
return new_user
参数.py
from . import schemas
from database.models import User
from flask_restplus_patched import PostFormParameters
from flask_marshmallow import base_fields
class AddUserParameters(PostFormParameters, schemas.BaseUserSchema):
name = base_fields.String(required=True)
email = base_fields.String(required=True)
架构.py
from flask_restplus_patched import Schema, ModelSchema
from database.models import User
class BaseUserSchema(ModelSchema):
class Meta:
model = User
fields = (
User.id.key,
User.name.key,
User.email.key,
User.risk.key,
)
class DetailedUserSchema(BaseUserSchema):
class Meta(BaseUserSchema.Meta):
fields = BaseUserSchema.Meta.fields + (
User.notes.key,
User.applications.key,
User.scopes.key,
)
当我尝试启动我的应用程序时,我收到呼叫跟踪:
Traceback (most recent call last):
File "main.py", line 2, in <module>
from api import api
File "/Users/user/code/gosa_v2/src/api/__init__.py", line 2, in <module>
from .users.resources import api as users_api
File "/Users/user/code/gosa_v2/src/api/users/resources.py", line 12, in <module>
class Users(Resource):
File "/Users/user/code/gosa_v2/src/api/users/resources.py", line 18, in Users
@api.parameters(parameters.AddUserParameters())
File "/Users/user/Library/Python/3.6/lib/python/site-packages/flask_restplus_patched/parameters.py", line 44, in __init__
super(PostFormParameters, self).__init__(*args, **kwargs)
File "/Users/user/Library/Python/3.6/lib/python/site-packages/flask_restplus_patched/parameters.py", line 20, in __init__
super(Parameters, self).__init__(strict=True, **kwargs)
File "/Users/user/Library/Python/3.6/lib/python/site-packages/flask_restplus_patched/model.py", line 31, in __init__
super(ModelSchema, self).__init__(strict=True, **kwargs)
TypeError: __init__() got multiple values for keyword argument 'strict'
据我所知,基于该输出,strict
仅设置为True
. 如果我@api.parameters(parameters.AddUserParameters())
从 users.py 中删除,应用程序就会运行。
任何帮助是极大的赞赏。谢谢你。
解决方案
推荐阅读
- php - 在循环PHP中选择了多个复选框
- python - 通过python中给定数量的元素生成大小均匀的矩阵?
- c# - Bootstrap 主题在 Chrome 中没有改变,在 Internet Explorer 中稍微有效(全新用户)
- css - 如何使 scss 文件正常工作?
- python - 通过合并多个 (4) 其他列表创建一个新列表
- python - Pepper Robot:如何将 Python 地标检测移植到 Choregraphe?
- javascript - 是否可以在不改变其功能的情况下禁用 onclick?
- javascript - Angular 6 正确初始化自定义输入组件
- java - 使用扫描仪从两个文件中添加值不起作用
- perl - 如果“条件”,“做某事”的语法