我需要创建一个具有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(“未定义名称'my_document'”,)
其中dic_field1和dic_field2正确输出。
仅具有变量是不够的,因为在“ if”中使用它们时,输出如下:
TypeError(“ unhashable type:'set'”,)
答案 0 :(得分:2)
您似乎不太了解变量在瓶子中的工作方式。运行原始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