Как мне вызвать маршрут приложения из python с помощью Flask - PullRequest
1 голос
/ 09 мая 2019

У меня есть 2 маршрута с флягами, вот так.

@app.route("/table", methods=('GET', 'POST'))
@login_required
def table() -> str:
    return "<table><thead><tr><th>HELLO</th></tr></thead><tbody><tr><td>HOLA</td></tr></tbody></table>"

@app.route('/config', methods=('GET', 'POST'))
@login_required
def config() -> str:
    form = ConfigForm()
    return render_template(
        "product.html",
        form=form)

Маршрут конфигурации вызывает ConfigForm, который выглядит так ...

class ConfigForm(FlaskForm):
    def __init__(self):
        super().__init__()
        self.table = url_for("table")

Почему-то вместо self.table, содержащего таблицу html в строковом формате, он содержит /table. Можно ли вызвать маршрут колбы из python, который вернет значение?

1 Ответ

1 голос
/ 09 мая 2019

Это потому, что url_for возвращает строку URL для определенного метода (в данном случае table)

Решение: создать другой метод

def get_table_content() -> str:
    return "<table><thead><tr><th>HELLO</th></tr></thead><tbody><tr><td>HOLA</td></tr></tbody></table>"

@app.route("/table", methods=('GET', 'POST'))
@login_required
def table() -> str:
    return get_table_content()

@app.route('/config', methods=('GET', 'POST'))
@login_required
def config() -> str:
    form = ConfigForm()
    return render_template(
        "product.html",
        form=form)

и далее должно работать:

class ConfigForm(FlaskForm):
    def __init__(self):
        super().__init__()
        self.table = get_table_content()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...