Flask возвращает словарь или таблицу в зависимости от версии python

#python #flask #jinja2 #ovh

Вопрос:

В настоящее время я разрабатываю приложение с использованием Flask на сервере OVH. У меня есть две страницы: форма и страница результатов.

Вот приложение :

 @application.route('/traitement', methods=['POST'])
@basic_auth.required
def traitement():
    result = request.form
    return render_template("traitement.html", **result)
 

А вот и шаблон :

 {{ name }} {{ surname }}
 

На моем локальном сервере все работает хорошо.
Но в OVH jinja2 работает по-другому: мне нужно добавить [0] к имени и фамилии, чтобы получить значения, как если бы словарь был преобразован в таблицу :

 {{ name[0] }} {{ surname[0] }}
 

Я посмотрел на версии пакетов, которые я использую: они идентичны. Однако я использую python 3.7 локально, тогда как python 3.5 используется OVH.

  • Как вы думаете, управление версиями python является причиной, по которой jinja2 запрашивает [0] ?
  • Кто-нибудь знает, как обновить python на OVH до 3.7 ? Я использую облачные веб-серверы.
  • Если невозможно обновить python на OVH, как я могу продолжать использовать словари, а не таблицы на python 3.5 ?

Заранее спасибо.

Комментарии:

1. Я предполагаю, что проблема связана с вашей HTML-формой ? Вы также синхронизировали HTML-страницу ?

Ответ №1:

Итак, это странно, но копирование «результата» в другой словарь заставило его работать…

 def traitement():
    result = request.form
    inputs = {}
    for cle, valeur in result.items():
        inputs[cle] = valeur
    return render_template("traitement.html", **inputs)
 

Я действительно не понимаю, почему, но теперь это работает идеально !