Подтвердить что ты не робот

Render_template с несколькими переменными

Я использую Flask (как фреймворк) и MongoDB (как сервер базы данных). Прямо сейчас, все, что я могу сделать, это просто передать один аргумент, который я получил из базы данных:

@app.route('/im/', methods=['GET', 'POST'])
def im_research(user=None):
    error = None
    if request.method == 'POST':
        if request.form['user']:
            user = mongo.db.Users.find_one_or_404({'ticker':request.form['user']})
            return redirect(url_for('im_user',user= user) )
        else:
            flash('Enter a different user')
            return redirect(url_for('im'))
    if request.method == 'GET':
       return render_template('im.html', user= None)

Как передать несколько переменных из базы данных: например: в моей базе данных Mongo: у меня есть эти вещи в моей базе данных, и я хотел бы передать их всем в мой шаблон.

{
users:'xxx'
content:'xxx'
timestamp:'xxx'
}

Можно ли это сделать с помощью Flask?

4b9b3361

Ответ 1

Вы можете передать несколько параметров в представление.

Вы можете передать всю свою локальную переменную

@app.route('/')
def index():
  content = """
     teste
   """
  user = "Hero"
  return render_template('index.html', **locals())

или просто передайте свои данные

def index() :
    return render_template('index.html', obj = "object", data = "a223jsd" );

api doc

Ответ 2

return render_template('im.html', user= None, content = xxx, timestamp = xxx)

Вы можете передать столько переменных, сколько вам нужно. api

выдержка:

flask.render_template (template_name_or_list, ** context) Оказывает шаблон из папки шаблона с заданным контекстом.

Параметры: template_name_or_list - имя шаблона рендеринг или итерабельность с именами шаблонов, первая из существующих будет отображаться в контексте - переменные, которые должны быть доступны в контекст шаблона.

Ответ 3

Также можно передать список в контекстные переменные render_template и ссылаться на его элементы с синтаксисом Jinja в HTML.

example.py

l = [user, content, timestamp]
return render_template('exemple.html', l=l)

exemple.html

...
<body>
    {% for e in l %}
        {{e}}
    {% endfor %}
</body>
...