flask_restplus add_namespace 一直没有属性“as_view”

Ton*_*ang 4 python flask

我编写了一个烧瓶,尝试按照本教程使用带有命名空间的蓝图来组织它

我遇到了一些问题,并环顾了互联网并在12 中查看了解决方案。第一个与我的工作无关,第二个解决方案无法解决我的问题。

这是我的代码:

项目/项目.py

from flask import Flask, jsonify, url_for
from .apis.apis import api

app = Flask(__name__)

app.register_blueprint(api, url_prefix="/api")
Run Code Online (Sandbox Code Playgroud)

项目/apis/apis.py

from flask import Blueprint
from .user.authentication import auth
from flask_restplus import Api, apidoc, Resource

blueprint = Blueprint("api", __name__)

api = Api(blueprint, doc='/docs', ui=False)

api.add_namespace(auth, path="/auth") #Keep getting error at this line
Run Code Online (Sandbox Code Playgroud)

项目/apis/用户/authentication.py

from flask_restplus import Namespace

auth = Namespace('auth', description='Authentication')

@auth.route("/test")
def authentication():
    return "test"
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

    Traceback (most recent call last):
        File "/home/gaara/Python/Flask-Api/project/__init__.py", line 1, in <module>
            from .project import app
        File "/home/gaara/Python/Flask-Api/project/project.py", line 3, in <module>
            from .apis.apis import api
        File "/home/gaara/Python/Flask-Api/project/apis/apis.py", line 13, in <module>
            api.add_namespace(auth, path="/auth")
        File "/home/gaara/Python/Flask-Api/venv/lib/python3.6/site-packages/flask_restplus/api.py", line 413, in add_namespace
            self.register_resource(ns, resource, *self.ns_urls(ns, urls), **kwargs)
        File "/home/gaara/Python/Flask-Api/venv/lib/python3.6/site-packages/flask_restplus/api.py", line 255, in register_resource
            self._register_view(self.app, resource, *urls, **kwargs)
        File "/home/gaara/Python/Flask-Api/venv/lib/python3.6/site-packages/flask_restplus/api.py", line 276, in _register_view
            resource_func = self.output(resource.as_view(endpoint, self, *resource_class_args,
    AttributeError: 'function' object has no attribute 'as_view'
Run Code Online (Sandbox Code Playgroud)

我不确定为什么我不断收到此错误,尝试了几种方法,将 apis.py 全部放入 __init__.py 并更改导入,但总是收到相同的错误。

我希望以一种有组织的方式对 api 进行编码,当去localhost:5000/api/auth/test它时它会输出我test

小智 6

您定义了一个函数,但 Flask restplus 需要一个类,您也可以在教程中看到。

所以它应该是这样的:

from flask_restplus import Resource

@auth.route("/test") 
class Authentication(Resource):
    def get(self):
        return "test"
Run Code Online (Sandbox Code Playgroud)