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多进程和多线程究竟谁更快(详解)
May 29 Python
python僵尸进程产生的原因
Jul 21 Python
python 动态加载的实现方法
Dec 22 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
对python append 与浅拷贝的实例讲解
May 04 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
TensorFLow 数学运算的示例代码
Apr 21 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 金额数字转换成英文
2010/05/06 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
jQuery的slideToggle方法实例
2013/05/07 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
js验证密码强度解析
2020/03/18 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
详解Python中的type()方法的使用
2015/05/21 Python
python监控文件或目录变化
2016/06/07 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
携程英文网站:Trip.com
2017/02/07 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
毕业生自荐信格式
2014/03/07 职场文书
交通安全寄语大全
2014/04/08 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
大学团日活动总结书
2015/05/11 职场文书
Redis基本数据类型Set常用操作命令
2022/06/01 Redis