我正在搞乱龙卷风网络应用程序,我需要一些帮助。我有多个具有相同名称的复选框,我想POST所选的复选框。
<input id=DB_BASED_ID name="activity" value=DB_BASED_ID type="checkbox"/>
<input id=DB_BASED_ID name="activity" value=DB_BASED_ID type="checkbox"/>
<input id=DB_BASED_ID name="activity" value=DB_BASED_ID type="checkbox"/>
<input id=DB_BASED_ID name="activity" value=DB_BASED_ID type="checkbox"/>
我可以在POST之前使用javascript获取每个值,但是在python(龙卷风)方面遇到此列表时遇到了麻烦。我只获得最高选择值。
它在python方面看起来像是:...
def post(self):
email = self.get_argument("email")
activity = self.get_argument("activity")
答案 0 :(得分:2)
让多个标签具有相同的名称属性,但 id
属性必须必须是唯一的 - 这里,它们不是(除非每个相同的DB_BASED_ID
出现在某种程度上意味着用不同的值替换?但是为什么不显示实际上的东西 distinct,因为它们出现在真正的HTML中?!),使得这个无效的HTML并受到各种各样的问题的影响。
修复此问题后,在这些处理程序方法中,self.request.arguments['activity']
(如果所述目录中存在该字符串键)将是名为'activity'
的所有输入的非空值列表(如果有)。
答案 1 :(得分:0)
这也可以通过循环进行动态演示和收集来完成。假设,如果您在GET方法中提供要检查的列表,则可以像这样在HTML中显示它:
<p><h3>Select Applicable Characteristics:</h3></p>
{% for c in chars %}
<p><h4><input type="checkbox" name="{{ c }}" value="{{ c }}"/> {{ c }}</h4></p>
{% end %}
POST方法可以迭代该列表,为每个列表收集并创建列表输入。它稍微有点技术性,但是我无法使上述解决方案起作用。
# Characteristics loop
chars = [x.split('_')[1] for x in bs.attr.keys('chr_*')]
checked_chars = []
for c in chars:
checked = self.get_argument(c, None)
if checked is not None:
checked_chars.append(checked)
这将Tornado的模板化(jinja2)功能与一些html结合在一起,形成了一个简单的界面。可行且快速,公认不是最佳的生产解决方案。希望这会有所帮助!