Как я могу реструктурировать свой код для рендеринга в шаблоне jinja 2? - PullRequest
0 голосов
/ 27 апреля 2019

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

dic = mycol.find(myquery)

это будет содержать запрос объекта словаря из mongodatabase, когда я зацикливаюсь на этом объекте, я получаю словарь установленный

for x in dic:

как каждое значение x содержит

{'name':'john','age':'15','weight':'50'}
{'name':'ash','age':'18','weight':'60'}
{'name':'tim','age':'20','weight':'80'}

код, который я использую для рендеринга этих значений, как показано ниже

person_name = []
person_age = []
person_weight = []
for x in dic:
    person_name.append(x["person_name"])
    person_age.append(x["person_age"]) 
    person_weight.append(x["person_weight"])

позже я возвращаю эти списки для печати в коде html jinja 2, как показано ниже

{{person_name[loop.index0]}} {{person_age[loop.index0]}} {{person_weight[loop.index0]}}

Я чувствую, что это не лучший подход к этому.Так есть ли какой-нибудь другой лучший способ сделать это с помощью нескольких строк кода?спасибо за чтение

1 Ответ

1 голос
/ 27 апреля 2019

Если вы используете колбу, вы можете просто передать список или словарь в шаблон HTML с помощью функции render_template () колба.

В вашем случае вы можете просто сделать (используя это в качестве примера). Обратите внимание: там, где написано dictionary=dic, первым dictionary может быть любое имя / переменная, на которую вы затем будете ссылаться в синтаксисе Jinja2.

@app.route('/')
def index():
    # Code to get dictionary from db, assigned to dic like yours
    return render_template('[name of template].html', dictionary=dic)

Затем внутри вашего шаблона вы можете использовать синтаксис Jinja2, чтобы сделать цикл for для просмотра в списке словаря / списка dic.

// Somewhere inside HTML template
{% for x in dictionary %}
    <p>{{ x.name }}</p>
    <p>{{ x.age }}</p>
    <p>{{ x.weight }}</p>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...