该复选框在未选中时不能返回 False,但在选中时可以返回 True
Posted
技术标签:
【中文标题】该复选框在未选中时不能返回 False,但在选中时可以返回 True【英文标题】:The checkbox cannot return False when unchecked but can return True when checked 【发布时间】:2021-06-19 03:46:33 【问题描述】:app.py
@app.route('/register',methods=['GET','POST'])
def register():
if request.method == 'POST':
details = request.form
name = details['name']
username = details['username']
password = details['password']
tel = details['tel']
email = details['email']
is_member = details['member']
if is_member == 'on':
is_member = True
else:
is_member = False
cursor = mysql.connection.cursor()
query = '''INSERT INTO customers (name,username,password,tel,email,member) VALUES(%s,%s,%s,%s,%s,%s)'''
values = (name,username,password,tel,email,is_member)
cursor.execute(query,values)
mysql.connection.commit()
cursor.close()
return redirect(url_for('reg_success'))
return render_template('reg_account.html')
reg_account.html
<script>
$(doucment).ready(function()
$("#submit_detail").click(function()
$("#member").is(':checked',function()
if ($(this).is(':checked'))
$(this).attr('value',"True");
else
$(this).attr('value',"False");
var is_member = $("#member").val();
)
)
)
</script>
% block content %
<form method="POST" class="login_details">
<h3>Registration</h3>
<!-- <legend>Log-in Details</legend> -->
<p><label for="name">Name:</label><input type="text" name="name" id="name" size="35" required></p>
<p><label for="tel">Mobile:</label><input type="text" name="tel" id="tel" size="35" required></p>
<p><label for="email">Email:</label><input type="text" name="email" id="email" size="35"></p>
<p><label for="username">Username:</label><input type="text" name="username" id="username" size="35" required></p>
<p><label for="password">Password:</label><input type="text" name="password" id="password" size="35" required></p>
<p><label for="cpw">Confirm password:</label><input type="text" name="cpw" id="cpw" size="35" required></p>
<p><label for="member">Apply as member?</label><input type="checkbox" name="member" id="member"></p>
<p><input type="submit" id="submit_detail" value="Register"></p>
</form>
% endblock %
错误:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'member'
当#member
中的复选框未选中时,我想让is_member
的结果返回False,但是我不明白为什么当我勾选复选框时它会起作用,然后结果可以存储到数据库中?我尝试调试了几次,但仍然找不到可能的解决方案,所以有人可以帮忙吗?
【问题讨论】:
【参考方案1】:检查一下
if 'member' in data:
# your code
else:
#your code
代替
is_member = data['member']
这里的问题是,如果未选中,您不会从 UI 发送成员。因此烧瓶无法在数据字典中找到它。
【讨论】:
是details
而不是data
,因为我使用了details = request.form
?
是的。对不起,我的坏事以上是关于该复选框在未选中时不能返回 False,但在选中时可以返回 True的主要内容,如果未能解决你的问题,请参考以下文章
PHP JQuery Checkbox - 如果复选框被预先选中,它不会在未选中时删除“选中”属性