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检测是文件还是目录的方法
Jul 03 Python
python机器人行走步数问题的解决
Jan 29 Python
深入理解Django的中间件middleware
Mar 14 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
Python socket实现的简单通信功能示例
Aug 21 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
PyCharm配置mongo插件的方法
Nov 30 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
Python中第三方库Faker的使用详解
Apr 02 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JS实现购物车特效
2017/02/02 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Python的标准模块包json详解
2017/03/13 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
博士生入学考试推荐信
2013/11/17 职场文书
电焊工岗位职责
2014/03/06 职场文书
静心口服夜广告词
2014/03/20 职场文书
出国留学经济担保书
2014/04/01 职场文书
私人委托书格式
2014/09/10 职场文书
科学发展观标语
2014/10/08 职场文书
综治维稳工作汇报
2014/10/27 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
2016党校培训心得体会
2016/01/07 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书