Как отобразить новую строку из python строки в HTML шаблон, используя FLASK? - PullRequest
1 голос
/ 18 июня 2020
message=""
@app.route("/", methods=["GET", "POST"])
def upload_file():
global message
if request.method == "POST":
    if request.files:
        data=request.files["file"]
        if data.filename == "":
            message="File doesn't have a name! <br>"
        elif allowed_file(data.filename):
            message+="File Allowed <br>"
            data.save(os.path.join(app.config["FILE_UPLOAD"], data.filename))
            message+="File Saved"
            if(validate()):
                message+="File validated! <br>"
            else: message+="Failed validation <br>"
        else:
            message+="File extension not allowed! <br>"
return render_template("ui.html",message=message)

Я пытаюсь проверить файл, загруженный в мой пользовательский интерфейс. html шаблон, используя flask, и я хочу отправить строку «сообщения» обратно в пользовательский интерфейс. html о статусе проверки и чтобы показать это красиво, я пытаюсь добавить новую строку всякий раз, когда новая строка добавляется к строке "message", чтобы при отображении ее в моем ui. html новая строка добавлялась там, где я хотел. Вот как я визуализирую строку «message» в ui. html:

{% if message %}
     <p>{{ message }}</p>
{% endif %}

Но ui. html не отображает <br> и печатает его как строку на ui . html шаблон. Как я могу это решить? Я тоже пробовал <br />.

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Я решил это с помощью функции fla sh, предоставляемой flask. Он печатает каждое сообщение отдельно, поэтому я могу добавить <p> только в свой HTML файл. В файл ui. html для рендеринга внесены следующие изменения:

{% for message in get_flashed_messages() %}
      <p>{{ message }}</p>
{% endfor %}
0 голосов
/ 18 июня 2020

Также упоминается в рендерить html строк в flask шаблонах flask шаблонизатор (jinja2) предполагает, что ввод внутри {{}} небезопасен и не позволяет js или html для рендеринга внутри него. Самый простой способ - использовать безопасный фильтр, чтобы сделать это.

{{ message | safe }}

Согласно документации flask https://flask.palletsprojects.com/en/1.1.x/templating/ есть два других способа контролировать поведение автоэскейпинга что либо , обернуть строку HTML в объект разметки или отключить автоэкранирование в целом следующим образом:

{% autoescape false %}
<p>autoescaping is disabled here
<p>{{ will_not_be_escaped }}
{% endautoescape %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...