为了账号安全,请及时绑定邮箱和手机立即绑定

django 自动检查我是否将它保存到数据库

django 自动检查我是否将它保存到数据库

慕标5832272 2021-12-02 14:37:51
这是我的 html:<input type="checkbox" value="1" name="Visual" id="visual"><input type="checkbox" value="1" name="Tuberculosis" id="Tuberculosis"><input type="checkbox" value="1" name="Skin" id="Skin"><script type="text/javascript">$('#checkbox-value').text($('#checkbox1').val());$("#checkbox1").on('change', function() {  if ($(this).is(':checked')) {    $(this).attr('value', 'true');  } else {    $(this).attr('value', 'false');  }  $('#checkbox-value').text($('#checkbox1').val());});</script>这是我的观点:Visual = request.POST['Visual']Tuberculosis = request.POST['Tuberculosis']Skin = request.POST['Skin']V_insert_data = StudentUserMedicalRecord(    Visual=Visual,    Tuberculosis=Tuberculosis,    Skin=Skin)V_insert_data.save(每一次为什么我将数据保存到我的数据库,在Visual,Tuberculosis并Skin自动检查,即使我没有检查它,当我保存它?或者我认为我的 javascript 是错误的?
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

  1. 你不需要$('#checkbox-value').text($('#checkbox1').val());,除非你在页面上有你没有向我们展示的元素。

  2. 您不能在同一页面上定义多个具有相同 id 的元素。 (同样适用于name属性)。使用不同的 id,如我的代码所示,并按类/名称匹配 chekboxes。

  3. 不要把value="1"你的复选框。

  4. 将您的 jQuery 代码放在 a 中$(function() { });,它是$( document ).ready(). 更多信息在这里

  5. 不要使用裸request.POST值,self.cleaned_data['var_name']而是使用经过消毒的值。

  6. 我认为使用大写字母的参数名称不是一个好主意(这只是一个注释,它不会影响功能)。根据 Python 的PEP 8,只有类应该以大写字母开头。

前端:

<input type="checkbox" name="Visual" id="checkbox1" class="checkbox-js-trigger-class">

<input type="checkbox" name="Tuberculosis" id="checkbox2" class="checkbox-js-trigger-class">

<input type="checkbox" name="Skin" id="checkbox3" class="checkbox-js-trigger-class">


<script type="text/javascript">


$(function() {

      $(".checkbox-js-trigger-class").on("change", function(){

          var new_val = $(this).is(':checked') ? 1 : 0;

          $(this).val(new_val);

      });

});

</script>

后端:


最好使用Model Form:


class StudentUserMedicalRecordForm(ModelForm):

    class Meta:

        model = StudentUserMedicalRecord

        fields = ['Visual', 'Tuberculosis', 'Skin']


查看完整回答
反对 回复 2021-12-02
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

复选框输入实际上有点奇怪,并且与您认为它们的工作方式不同。


当复选框被更改时,您不需要 jQuery 来处理这种情况。浏览器和 HTML 会为您处理。(有点像当用户专注于 input type="text" 以使字母显示在文本框中时,您不需要监听按下的键。)


相反,如果用户选中复选框,则输入将具有一个名为已选中的属性。它看起来像这样。


复选框输入标签还有另外两个属性名称和值。这些是提交表单时发送到服务器的内容。但它只发送选中复选框的名称和值对!对于未选中的复选框,它不发送任何内容。因此,如果每个复选框都有一个名称和值,您可以将其视为一个键值对。如果选中该复选框,它将向服务器发送 key=value。如果将名称指定为数组的名称,则允许单个键具有多个值。


所以想象一下你有一个这样的表格:


<input type="checkbox" name="disease[]" value="tuberculosis" checked>

<input type="checkbox" name="disease[]" value="chickenpox" checked>

<input type="checkbox" name="disease[]" value="smallpox">

<input type="checkbox" name="needs_medicine" value="true" checked>

<input type="checkbox" name="recovered" value="whatevervalue">

提交该表单后,服务器将收到类似“disease=[tuberculosis,chickenpox]&needs_medicine=true”的信息


请注意,天花和恢复没有提及,因为它们没有被检查。另请注意,将什么作为不是多选复选框的复选框的值(在本例中为需要医学)并不是非常重要,因为发送到服务器的值将始终是复选框的值(在在这种情况下,字符串“true”)。


查看完整回答
反对 回复 2021-12-02
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

因为你有"1"在这里给出的默认值

<input type="checkbox" value="1" name="Visual" id="visual">

而且您的脚本中也没有引用id = "checkbox1"id = "checkbox-value"引用的元素。


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信