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使用循环实现批量创建文件夹示例
Mar 25 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
对python字典过滤条件的实例详解
Jan 22 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
Python读取表格类型文件代码实例
Feb 17 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
python性能测试工具locust的使用
Dec 28 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
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
科室工作的个人自我评价
2013/10/30 职场文书
留学推荐信写作指南
2014/01/25 职场文书
成本会计实训报告
2014/11/05 职场文书
复兴之路观后感
2015/06/02 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
《去年的树》教学反思
2016/02/18 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
MySQL触发器的使用
2021/05/24 MySQL
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android