Передача аргументов url_for Python

У меня есть два определения для создания вопроса и предварительного просмотра вопроса.

Я хочу передать идентификатор вопроса с def create() на def preview(). Но def preview() не может реализовать ID.

Я пробовал использовать return redirect(url_for('preview', question_id=question_id)), а в моем def preview() я использовал question_id = request.args.get('question_id',type=str).

Как я могу это исправить?

Мой код здесь:

@app.route("/create/", methods=['GET','POST'])
def create():
    question = "How are you?"
    question_id = "123456"
    return redirect(url_for('preview'), question_id=question_id)

@app.route("/preview/", methods=['GET','POST'])
def preview():
    question_id = request.args.get('question_id', type=str)
    print(question_id)

person Khang Thinh Nguyen    schedule 17.12.2019    source источник
comment
Можете ли вы поделиться сообщением об ошибке? (если есть)   -  person Flo    schedule 17.12.2019
comment
Кстати, вы передаете параметр question_id в функцию url_for вместо redirect. Пожалуйста, исправьте на: redirect(url_for('preview'), question_id=question_id)   -  person Flo    schedule 17.12.2019
comment
Он должен показать мне идентификатор на странице, но он просто показывает мне пустую страницу!   -  person Khang Thinh Nguyen    schedule 17.12.2019


Ответы (1)


В маршруте предварительного просмотра вы выполняете print(question_id), который ничего не записывает и не отображает на странице, он только выводит значение на вашу консоль (stdout), вот и все.

Попробуйте с render_template_string вот так:

from flask import render_template_string

[...]



@app.route("/preview/", methods=['GET','POST'])
def preview():
    question_id = request.args.get('question_id', type=str)
    return render_template_string('question_id = {{ question_id }}', question_id=question_id)

Надеюсь, поможет.

person Flo    schedule 17.12.2019