小编vic*_*.py的帖子

Flask-Swagger-UI 无法识别 swagger.json 的路径

我正在构建一个 API,使用 Flask、flask-restful 和 flask-swagger-ui。我现在已经修改了项目结构,现在我无法再访问项目的 swagger.json 文件。

根据包文档flask-swagger-ui,您只需要将参数 API_URL 更改为正确的路径。但即使输入相对路径或完整路径,我也无法再访问该文件。

在此处输入图片说明

我的代码:

from flask import Flask, jsonify
from flask_migrate import Migrate
from flask_restful import Api
from flask_swagger_ui import get_swaggerui_blueprint

def create_app(config_name):

    app = Flask(__name__)

    app.config.from_object(config[config_name])

    api = Api(app, prefix="/api/v1")

    '''swagger specific'''
    SWAGGER_URL = '/api/v1/docs'
    # API_URL = 'templates/swagger.json'
    API_URL = 'app/templates/docs/swagger.json'
    SWAGGERUI_BLUEPRINT = get_swaggerui_blueprint(
        SWAGGER_URL,
        API_URL,
        config={
            'app_name': "My Rest App"
        }
    )

    app.register_blueprint(SWAGGERUI_BLUEPRINT, url_prefix=SWAGGER_URL)

    db.init_app(app)
    Migrate(app, db)

    return app
Run Code Online (Sandbox Code Playgroud)

我的树结构:

??? API
?   ??? app
?   ? …
Run Code Online (Sandbox Code Playgroud)

flask swagger-ui flask-restful

5
推荐指数
1
解决办法
2889
查看次数

使用 Flask-jwt-extend 的 API 存在身份验证问题?

我已经使用flask-restful和flask-jwt-extend构建了一个api,并正确配置了令牌过期和失效的验证通道。但是,即使构建了令牌过期和无效验证回调,api也无法正确处理并报告错误:签名已过期

在云服务器上,我们有一台 Centos 7 x64 16GB RAM,使用版本 19.9.0 的 Gunicorn 运行应用程序。使用 miniconda 创建应用程序的 python 环境。

在生产环境的测试中,应用程序抱怨令牌过期。然而,在测试环境中,使用 Ubuntu 18.04.2、x64 和 16 GB RAM,使用与 miniconda 和 Gunicorn 相同的设置,应用程序执行它没有问题,在令牌过期时返回正确的消息。

我的 jwt.py

from flask import Blueprint, Response, json, request
from flask_jwt_extended import (JWTManager, create_access_token,
                                create_refresh_token, get_jwt_identity,
                                jwt_required)

from app.models.core import User

from .schemas import UserSchema
from .utils import send_reponse, user_roles


def configure_jwt(app):
    JWT = JWTManager(app)

    @JWT.expired_token_loader
    def my_expired_token_callback(expired_token):
        return Response(
            response=json.dumps({
                "message": "Expired token"
            }),
            status=401,
            mimetype='application/json'
        )

    @JWT.invalid_token_loader
    def my_invalid_token_callback(invalid_token):
        return Response(
            response=json.dumps({ …
Run Code Online (Sandbox Code Playgroud)

flask flask-restful flask-jwt-extended

3
推荐指数
1
解决办法
5361
查看次数

如何将模板导入到Flask中templates文件夹的子目录中?

目前我有一个基于flask-restful的API项目,带有使用OpenAPI(Swagger)创建的文档页面。我正在尝试创建一个登录页面,根据我的结构 jinja2 找不到模板的路径。

\n\n

在登录脚本中,我尝试在函数中传递 .html 文件的完整路径render_template(),但没有找到该文件。就像添加参数一样template_folder = path/to/file,app=Flask(__name__)我没有成功。

\n\n

我的结构:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 auth\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 login.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jwt.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 request.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 core.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 db_app_2.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 routes\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 resources.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 swagger.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 swagger.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pages\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 …
Run Code Online (Sandbox Code Playgroud)

jinja2 flask flask-restful

2
推荐指数
1
解决办法
5185
查看次数

Flask-CLI 无法运行应用程序?

我正在使用flask 和flask-restful 开发REST API。我目前在使用flask-cli 时遇到问题,因为在公司环境中我无法运行该应用程序。可能是什么问题?

在企业中,我们使用 conda 环境,用于 python 3 应用程序。目前api的环境由python 3.6.8和flask 1.0.2和flask-restful 0.37组成,在CentOS 7上运行。即使通过conda的需求或enviroment.yml重新创建环境,我也无法运行应用程序,不同从我的个人机器 ubuntu 18.04,使用 miniconda3 和 env python 3.6.8,使用相同的烧瓶包,我可以毫无问题地进行测试。

错误:

  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 235, in locate_app
    __import__(module_name)
ModuleNotFoundError: No module named 'main'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 325, in __call__
    self._flush_bg_loading_exception()
  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 313, in _flush_bg_loading_exception
    reraise(*exc_info)
  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 302, in _load_app
    self._load_unlocked()
  File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", …
Run Code Online (Sandbox Code Playgroud)

python flask flask-cli

0
推荐指数
1
解决办法
4632
查看次数