Django开发中复选框用法示例


Posted in Python onMarch 20, 2018

本文实例讲述了Django开发中复选框用法。分享给大家供大家参考,具体如下:

一、查询数据库遍历所有的复选框

1、python查询数据库所有的tag

# 新增文章
def add(request):
  if request.method == 'GET':
    tags = TagModel.objects.all()
    return render(request, 'books_add.html', {'tags': tags})
  elif request.method == 'POST':
    title = request.POST.get('title', None)
    content = request.POST.get('content', None)
    blogModel = BlogModel(title=title, content=content, author=AuthorModel.objects.get(id=1))
    blogModel.save()
    # 获取复选框的值,是一个选中的数组
    tags = request.POST.getlist('tags')
    # 循环遍历所有选中的复选框,利用多对多的关系追加到数据库
    for tag in tags:
      blogModel.tag.add(tag)
    return HttpResponseRedirect('book_add')
  else:
    return HttpResponse(u'是不被处理的请求方式')

2、前端页面

<div class="form-group">
  <label class="col-sm-2 control-label">标签</label>
  <div class="col-sm-9">
    {% for tag in tags %}
      <label class="checkbox-inline">
        <input value="{{ tag.id }}" type="checkbox" name="tags"/>{{ tag.name }}
      </label>
    {% endfor %}
  </div>
</div>

3、进入编辑页面,先获取全部的复选框及选中的id

# 编辑博客
def edit(request, blog_id):
  tags = TagModel.objects.all()
  # 利用正向查找关于本博客选择的tag
  blogModel = BlogModel.objects.filter(id=blog_id).first()
  # 获取全部的tag
  check_tag = blogModel.tag.all()
  # 获取选中的id
  check_id = [int(x.id) for x in check_tag]
  print check_id
  return render(request, 'books_edit.html', {'tags': tags, 'check_id': check_id})

4、判断如果选中的就勾选

<div class="form-group">
  <label class="col-sm-2 control-label">标签</label>
  <div class="col-sm-9">
    {% for tag in tags %}
      {% if tag.id in check_id %}
        <label class="checkbox-inline">
          <input value="{{ tag.id }}" type="checkbox" name="tags" checked="checked"/>{{ tag.name }}
        </label>
      {% else %}
        <label class="checkbox-inline">
          <input value="{{ tag.id }}" type="checkbox" name="tags"/>{{ tag.name }}
        </label>
      {% endif %}
    {% endfor %}
  </div>
</div>

二、ajax提交的时候注意要把复选框转换字符串提交

1、前端代码

$('#btn').on('click', function (e) {
  // 设置空数组
  var hobby = [];
  $('#hobby-group').find('input[type=checkbox]').each(function () {
 if ($(this).prop("checked")) {
   var hobbyId = $(this).val();
   hobby.push(hobbyId);
 }
  })
  console.log(hobby);
  $.ajax({
 'url': '/ajaxpost/',
 'method': 'post',
 'data': {
   'username': $('.username').val(),
   'hobby': hobby
 },
 'traditional': true,
 'beforeSend': function (xhr, settings) {
   var csrftoken = ajaxpost.getCookie('csrftoken');
   //2.在header当中设置csrf_token的值
   xhr.setRequestHeader('X-CSRFToken', csrftoken);
 },
 'success': function (data) {
   console.log(data);
 }
  })
})

2、后端代码

@require_http_methods(['POST'])
def ajaxpost(request):
  form = LoginForm(request.POST)
  if form.is_valid():
    username = form.cleaned_data.get('username', None)
    # 获取复选框的值
    hobby = request.POST.getlist('hobby')
    print '*' * 100
    print hobby
    print '*' * 100
    return HttpResponse(u'成功')
  else:
    return HttpResponse(u'验证错误')

希望本文所述对大家Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python每隔N秒运行指定函数的方法
Mar 16 Python
Python实现字典的key和values的交换
Aug 04 Python
Python将多个list合并为1个list的方法
Jun 27 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
python——全排列数的生成方式
Feb 26 Python
Python3标准库之dbm UNIX键-值数据库问题
Mar 24 Python
Jupyter加载文件的实现方法
Apr 14 Python
python TCP包注入方式
May 05 Python
Python实现播放和录制声音的功能
Aug 12 Python
python 如何调用远程接口
Sep 11 Python
Python 一键获取电脑浏览器的账号密码
May 11 Python
python如何通过twisted实现数据库异步插入
Mar 20 #Python
分分钟入门python语言
Mar 20 #Python
python使用生成器实现可迭代对象
Mar 20 #Python
浅谈Python中的作用域规则和闭包
Mar 20 #Python
python如何实现反向迭代
Mar 20 #Python
python利用高阶函数实现剪枝函数
Mar 20 #Python
python flask中静态文件的管理方法
Mar 20 #Python
You might like
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
再谈javascript原型继承
2014/11/10 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Python列表切片操作实例总结
2019/02/19 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
cf战队收人广告词
2014/03/14 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
《绝招》教学反思
2016/02/20 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android