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计数排序和基数排序算法实例
Apr 25 Python
Python创建xml的方法
Mar 10 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
python requests 使用快速入门
Aug 31 Python
python使用tornado实现登录和登出
Jul 28 Python
对python 命令的-u参数详解
Dec 03 Python
python 函数中的内置函数及用法详解
Jul 02 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
Python 中的 copy()和deepcopy()
Nov 07 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python3爬虫学习入门教程
2018/12/11 Python
Django框架模板介绍
2019/01/15 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
ktv收银员岗位职责
2013/12/16 职场文书
化学实验员岗位职责
2013/12/28 职场文书
考试退步检讨书
2014/01/15 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
卖车协议书
2014/04/21 职场文书
五心教育心得体会
2014/09/04 职场文书
地方白酒代理协议书
2014/10/25 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技