Доступ к словарю внутри шаблона и управление его переменными - PullRequest
0 голосов
/ 22 октября 2018

Мне нужно создать группу выпадающих списков со значениями типа int (например, 1-3), они сохраняются и правильно читаются в mongodb.После первого сеанса я хотел бы поместить их сохраненные значения в выпадающий список

Функция на сервере. Py:

@get('/my_url')
def form():
   #get the last entry in database, the most updated one
   for my_document in db.mydb.find():
    pass

   return template('asset_form',**my_document)

asset_form.tpl (часть):

<h1>My site</h1>     
<hr>
<h3>Asset:   <input name="name1" type="text" value="Mail Server" input disabled /> </h3>

           {{dic_field1}}
           {{dic_field2}}
           {{my_document}}

            <table style="width:100%">
            <tr>
            <th>Col1</th>
            <th>Col2</th>
            <th>Col3</th>  
            <th>Col4</tj>
            </tr>
            <td>
                  <form method="POST" action="/the_post_url">
            <br/>
            Number of day(s):<select name = dic_field1>
              %if{{dic_field1}} == 1:
                <option value="1" selected >1</option>
              %else: 
                <option value="1">1</option>
              %end
              %if {{dic_field1}} == 2:
                <option value="2" selected >2</option>
              %else: 
                <option value="2">2</option>
              %end
              %if {{dic_field1}} == 3:
                 <option value="3" selected>3</option>
              %else: 
                 <option value="3">3</option>
              %end

Я могу получить значения на сервере python (напечатайте их правильно).Словарь my_document имеет поля: dic_field1 и dic_field2,

В шаблоне переменная "{{my_document}}" выдает ошибку:

NameError ("name" my_document "is isне определено ",)

Где, как dic_field1 и dic_field2 выводят правильно.

Недостаточно иметь переменные, потому что при использовании их в выражении" if "получается следующее:

TypeError («не подлежащий обработке тип: 'set'",)

1 Ответ

0 голосов
/ 22 октября 2018

Похоже, вы не очень понимаете, как переменные работают в бутылке.При запуске сырого кода Python вам не нужны скобки.Они нужны только при добавлении значений данных в HTML.

Также просто отправьте результаты в шаблон и разберитесь с ними внутри шаблона.Таким образом, вам не нужно возиться с исходным кодом, а просто сосредоточиться на своем шаблоне.

@get('/my_url')
def form():
   #get the last entry in database, the most updated one
   my_document = db.mydb.find()
   return template('asset_form', mydocument = my_document)

Актив

%dic_field1 = mydocument['dic_field1']
%dic_field1 = mydocument['dic_field2']
%dic_field1 = mydocument['dic_field3']
<h1>My site</h1>     
<hr>
<h3>Asset:   <input name="name1" type="text" value="Mail Server" input disabled /> </h3>

           {{dic_field1}}
           {{dic_field2}}
           {{dic_field3}}

            <table style="width:100%">
            <tr>
            <th>Col1</th>
            <th>Col2</th>
            <th>Col3</th>  
            <th>Col4</tj>
            </tr>
            <td>
                  <form method="POST" action="/the_post_url">
            <br/>
            Number of day(s):<select name = {{dic_field1}}>
              %if dic_field1 == 1:
                <option value="1" selected >1</option>
              %else: 
                <option value="1">1</option>
              %end
              %if dic_field1 == 2:
                <option value="2" selected >2</option>
              %else: 
                <option value="2">2</option>
              %end
              %if dic_field1 == 3:
                 <option value="3" selected>3</option>
              %else: 
                 <option value="3">3</option>
              %end
...