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改变日志(logging)存放位置的示例
Mar 27 Python
简单介绍Python中的struct模块
Apr 28 Python
关于反爬虫的一些简单总结
Dec 13 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
python正则表达式之对号入座篇
Jul 24 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
基于python+selenium的二次封装的实现
Jan 06 Python
解决paramiko执行命令超时的问题
Apr 16 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 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 json_encode奇怪问题说明
2011/09/27 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
浅谈php7的重大新特性
2015/10/23 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
JavaScript面向对象编程
2008/03/02 Javascript
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
CentOS中升级Python版本的方法详解
2017/07/10 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
班班通项目实施方案
2014/02/25 职场文书
小学母亲节活动方案
2014/03/14 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
邀请书格式范文
2015/02/02 职场文书
工作后的感想
2015/08/07 职场文书
Python Numpy库的超详细教程
2022/04/06 Python
Linux中文件的基本属性介绍
2022/06/01 Servers