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 isinstance函数介绍
Apr 14 Python
Python中使用不同编码读写txt文件详解
May 28 Python
Python反射的用法实例分析
Feb 11 Python
用pandas按列合并两个文件的实例
Apr 12 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python Matplotlib基础--如何添加文本和标注
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
基于mysql的bbs设计(一)
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
javascript连续赋值问题
2015/07/08 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python mysql中in参数化说明
2020/06/05 Python
快速创建python 虚拟环境
2020/11/28 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
对公司合理化的建议书
2014/03/12 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
大学生逃课检讨书
2015/05/04 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers