python - 如何在 Eve 应用程序中使用 add_resource?
问题描述
我有一个 Eve 应用程序正在运行,我想重新组织它(只是为了遵循最佳实践),使其看起来类似于烧瓶应用程序目录结构。
我试图从烧瓶中使用类似的东西
from flask_restful import Api
app=Flask(__name__)
api = Api(app)
api.add_resource(resources.UserRegistration, '/registration')
在 Eve 中是这样的:
from eve import Eve
app = Eve(auth=CustomAuth)
api = Api(app)
api.add_resource(resources.UserRegistration, '/registration')
启动 Eve 应用程序时出现以下错误:
追溯:
File "/var/www/flask-api/views.py", line 1, in <module>
from run import app
File "/var/www/flask-api/run.py", line 22, in <module>
api.add_resource(resources.UserRegistration, '/registration')
File "/var/www/django/lib64/python3.6/site-packages/flask_restful/__init__.py", line 382, in add_resource
self._register_view(self.app, resource, *urls, **kwargs)
File "/var/www/django/lib64/python3.6/site-packages/flask_restful/__init__.py", line 448, in _register_view
app.add_url_rule(rule, view_func=resource_func, **kwargs)
File "/var/www/django/lib64/python3.6/site-packages/flask/app.py", line 98, in wrapper_func
return f(self, *args, **kwargs)
File "/var/www/django/lib64/python3.6/site-packages/flask/app.py", line 1274, in add_url_rule
rule = self.url_rule_class(rule, methods=methods, **options)
File "/var/www/django/lib64/python3.6/site-packages/werkzeug/routing.py", line 640, in __init__
if not string.startswith("/"):
AttributeError: 'functools.partial' object has no attribute 'startswith'
我的resources.py
文件看起来像这样:
from flask_restful import Resource
class UserRegistration(Resource):
def post(self):
return {'message': 'User registration'}
解决方案
您可以使用 Flask 蓝图在不同的文件中组织您的路线,然后在应用程序中注册它们。检查这个提到蓝图的前夕文档:https ://docs.python-eve.org/en/stable/snippets/hooks_blueprints.html 。
Flask 文档中有关 Flask 蓝图的更多信息:https ://flask.palletsprojects.com/en/1.1.x/blueprints/
推荐阅读
- reactjs - menuDataRender() 方法如何获取 menuList 的输入?
- mongodb - 使用基于对象键的键将对象数组转换为对象?
- javascript - React js 的 Axios 问题(每次运行 get/put 请求时都会出错)
- javascript - 您可以将字符串转换为数组的名称吗?
- c# - 如何从 WPF 后面的代码中使用 ItemsControl 创建 DataTemplate
- c++ - 如何识别 C++ 代码中的可执行行
- excel - Microsoft Excel - 将时间分为白天和黑夜
- bash - 如何捕获和退出所有子进程
- javascript - Change the value of object in an array on click event
- multithreading - 可以从运行 root.mainloop() 的线程以外的线程调用 tkinter root.after 吗?