我不知道您如何处理同一模块路由的所有视图。
我通常做的是将不同模块中的视图分开(就像你对模块A和B所做的那样),并将它们注册为蓝图,然后在使用url_for()函数时,你可以在前面加上前缀使用您的蓝图名称查看名称,然后避免冲突和潜在问题。
这是一个例子:
main_views.py:
from flask import Blueprint
main = Blueprint('main', __name__)
@main.route('/')
def index():
pass
admin_views.py:
from flask import Blueprint
admin = Blueprint('admin', __name__)
@admin.route('/admin')
def index():
pass
application.py:
from flask import Flask
from main_views import main
from admin_views import admin
app = Flask('my_application')
app.register_blueprint(main)
app.register_blueprint(admin)
现在,要访问 2 个索引视图并仍然区分另一个,只需使用 url_for('main.index') 或 url_for('admin.index')
编辑:
还有一个关于使用蓝图进行路由的有用细节,在注册蓝图时,您可以传递url_prefix 参数,该参数将应用于此蓝图中的每个视图。
例如,给定以下代码:
admin_views.py
from flask import Blueprint
admin = Blueprint('admin', __name__)
@admin.route('/')
def index():
pass
@admin.route('/logout')
def logout():
pass
application.py:
from flask import Flask
from admin_views import admin
app = Flask('my_application')
app.register_blueprint(admin, url_prefix='/admin')
这 2 个视图将在 URL /admin/ 和 /admin/logout 上提供