无法发布,因为我缺少参数

2024-04-20 04:55:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,对Flask RESTful甚至更新。我正试图让我的路线下降,但我遇到了麻烦。我使用Postman说“TypeError:post()缺少3个必需的位置参数:'username'、'avatar'和'friend_code'”时出错,但我在POST请求的正文中确实有这些参数

下面是我的代码。我只想从根目录中POST

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

users = []


class User(Resource):
    def get(self, username):
        # /<username>
        for user in users:
            if user['username'] == username:
                return user

    def post(self, username, avatar, friend_code):
        # / root
        user = {'username': username, 'avatar': avatar,
                'friend_code': friend_code}
        users.append(user)
        return user


api.add_resource(User, '/', '/<string:username>')


app.run(debug=True)

Tags: fromimportfriendappflask参数usernamecode
1条回答
网友
1楼 · 发布于 2024-04-20 04:55:22

您的post方法需要3个参数username, avatar, friend_code

执行api.add_resource(User, '/', '/<string:username>')操作时,只传递一个参数(用户名)。那么,其他两个(化身和朋友代码)呢

要么将它们硬编码为一些常量值,post方法总是可以选择这些常量值,要么使用reqparse从有效负载的主体解析它们

大致如下:

from flask_restful import Resource, Api, reqparse
parser = reqparse.RequestParser()

def post(self):
        parser.add_argument('avatar', type=str)
        parser.add_argument('friend_code', type=str)
        args = parser.parse_args()

        user = {'username': username, 'avatar': avatar,
                'friend_code': friend_code}
        users.append(user)
        return user

下面是一个很好的链接,让您开始Building Basic RESTful API with Flask-RESTful

相关问题 更多 >