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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
Python中的字符串替换操作示例
Jun 27 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
详解python单元测试框架unittest
Jul 02 Python
python实现简单http服务器功能
Sep 17 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
Python如何实现动态数组
Nov 02 Python
Python:slice与indices的用法
Nov 25 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
python利用后缀表达式实现计算器功能
Feb 22 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
python 实现德洛内三角剖分的操作
Apr 22 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代码 适用于登陆页面制作
2016/08/17 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
python读写二进制文件的方法
2015/05/09 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
国际贸易专业推荐信
2013/11/15 职场文书
医学院学生的自我评价分享
2013/11/19 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
高中军训感言1000字
2014/03/01 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
批评与自我批评范文
2014/10/15 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
田径运动会通讯稿
2015/07/18 职场文书
2016继续教育研修日志
2015/11/13 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers