Разрешено: Flask Dynami c Маршрут с шаблонами - PullRequest
0 голосов
/ 12 марта 2020

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