Django开发中复选框用法示例

作者:水痕01

这篇文章主要介绍了Django开发中复选框用法,结合实例形式分析了Django基于ajax的复选框遍历、提交及后台数据库查询等相关操作技巧,需要的朋友可以参考下

本文实例讲述了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 %}

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 %}

二、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变量的作用域详解
    2021-12-12
  • Python matplotlib底层原理解析
    Python matplotlib底层原理解析
    2021-12-12
  • pygame+opencv实现读取视频帧的方法示例
    pygame+opencv实现读取视频帧的方法示例
    2021-12-12
  • Python Pyqt5多线程更新UI代码实例(防止界面卡死)
    Python Pyqt5多线程更新UI代码实例(防止界面卡死)
    2021-12-12
  • 详解Python函数中的几种参数
    详解Python函数中的几种参数
    2021-12-12
  • Python解压可迭代对象赋值给多个变量详解
    Python解压可迭代对象赋值给多个变量详解
    2021-12-12
  • Python爬虫采集微博视频数据
    Python爬虫采集微博视频数据
    2021-12-12
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号