我编写了一个烧瓶,尝试按照本教程使用带有命名空间的蓝图来组织它
我遇到了一些问题,并环顾了互联网并在1和2 中查看了解决方案。第一个与我的工作无关,第二个解决方案无法解决我的问题。
这是我的代码:
项目/项目.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)
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |