Я не знаю, как вы могли бы поступить со всеми представлениями, маршрутизируемыми одним и тем же модулем.
Обычно я делаю свои представления в разных модулях (как вы делали с модулями 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)
Теперь, чтобы получить доступ к двум индексным представлениям и по-прежнему отличать одно от другого, просто используйте 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
приложение.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