如何使用request.form获取表单输入元数据

时间:2015-07-29 19:44:38

标签: python html forms flask

我有一系列HTML表单输入以实现

的效果
<input type="text" placeholder="Top bugs" name="top_bugs" id="input_1">

我检索此数据并使用

直接加载到dict中
dict(request.form)

这样做给我的键/值为{top_bugs : value}。但是我想知道如何检索id。我不希望id加载到dict中,但想以某种方式检索它,理想情况下将其转换为不同的dict。

有没有一种方法可以使用request.form(或通过不同的方法)从表单输入中检索更多名称和值?

3 个答案:

答案 0 :(得分:1)

只有表单中每个元素的名称和值对才会传递给您的脚本。

我通常的做法是在发送之前将其打包(序列化)到名称中,然后在另一端进行反汇编,所以:

<input type="text" placeholder="Top bugs" name="top_bugs~input_1" id="input_1">

然后:

tdict=dict(request.form)
fdict={}
idict={}
for item in tdict.keys():
    (name,id)=item.split("~",1)
    fdict[name]=tdict[item]
    idict[name]=id

这应该会给你字典fdict(名字=&gt;值)和idict(名字=&gt; id)。

我意识到这有点hackey;您可能还希望在提交表单时使用javascript将id附加到名称,而不是在表单创建时。

希望这有帮助

答案 1 :(得分:0)

简短的回答你不能。浏览器只发送字段的名称和值,无论方法如何。

答案 2 :(得分:0)

您还可以尝试定义隐藏元素:

cURL support    enabled
cURL Information    7.41.0
Age 3
Features
AsynchDNS   No
CharConv    No
Debug   No
GSS-Negotiate   No
IDN Yes
IPv6    Yes
krb4    No
Largefile   Yes
libz    Yes
NTLM    Yes
NTLMWB  Yes
SPNEGO  No
SSL Yes
SSPI    No
TLS-SRP No
Protocols   dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host    x86_64-apple-darwin10.8.0
SSL Version OpenSSL/0.9.8zd
ZLib Version    1.2.8

然后你可以提取id值,找到名称为''_id'模式的元素作为名称。