嗨,我有一个按以下方式构建的 Flask 应用程序,但我在蓝图设置方面遇到了问题。无论我做什么,它们都只适用于url_prefix设置。它目前可以正常工作,/main/verify但由于它是一个小应用程序,我希望有一个像/verify. 有趣的是,我设法让它与/路由一起工作,但对于相同的配置,它不适用于/verify. 我现在很无知,我可以忍受它,但我真的想知道我做错了什么。
这是代码:
__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)
from main import main
app.register_blueprint(main)
return app
Run Code Online (Sandbox Code Playgroud)
main/__init__.py
from flask import Blueprint
main = Blueprint('main', __name__, url_prefix='/main')
from . import views
Run Code Online (Sandbox Code Playgroud)
main/views.py
from flask import request, jsonify
from . import main
@main.route('/')
def index():
return "Hello world"
@main.route('/verify')
def verify():
url = request.args['url']
query = request.args['query']
return jsonify({ ... })
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,您没有在blueprint没有前缀的情况下注册。如果您需要注册没有前缀的端点,您必须创建一个新的实例Blueprint
main = Blueprint('main', __name__, url_prefix='/main')
# main endpoints(with prefix /main)...
@main.route('/')
def index_main():
return "Hello world from /main/"
# routes without any prefix
default = Blueprint('default', __name__)
@default.route('/')
def index():
return "Hello world from /"
app = Flask(__name__)
app.register_blueprint(main)
app.register_blueprint(default)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |