я пытаюсь работать с шаблонами (yaml-файлами) (главное - возможность динамически добавлять маршруты только с помощью шаблонов)
приведенный ниже пример кода - лишь малая часть кода
пример шаблона: tech_name: EXAMPLE_OF_TECH_NAME
category: category_1
tech_id: tech_id
function_name: function_1
return_function: eff_function
binding:
methods:
- GET
- POST
display_name: some_project
url_suffix: some_urlsffix
приложение python выглядит так:
from flask import Flask, render_template, session, request, make_response, abort
from funcs.libs._shared_funcs import cookie_exist, check_prems, build_nav_options
from flask_kerberos import requires_authentication
"""load_maindata - reads all of the templates"""
main_data, categories = load_maindata()
available_url_suffixes = [data['parameters']['binding']['url_suffix'] for data in main_data]
app = Flask(__name__)
""" base dynamic route based on templates """
@app.route("/<url_suffix>", methods=['GET', 'POST'])
@requires_authentication
def _f(user, url_suffix):
if url_suffix not in available_url_suffixes:
return abort(404)
tech = [tech for tech in main_data if tech['parameters']['binding']['url_suffix'] == url_suffix][0]
tech_id = tech['parameters']['tech_id']
return_function = tech['parameters']['return_function']
check_prems(tech_id)
return globals()[return_function](request, maestro_db, UKEY, tech)
теперь все выглядит хорошо, пока я не отправлю форму и чем он должен вернуться к некоторому маршруту Dynami c, но я получил следующую ошибку:
Не удалось создать URL для конечной точки 'function_1'.
похоже, что он забывает маршрут сразу после начальной загрузки ..
eff_fucntion возвращает:
resp = make_response(redirect(url_for('function_1', _external=True, _scheme='https')))
обновление: разрешено с помощью:
make_response(redirect('some_urlsuffix', code=301))
вместо
make_response(redirect(url_for('function_1', _external=True, _scheme='https')))