幽灵资源网 Design By www.bzswh.com
本文实例讲述了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程序设计有所帮助。
标签:
Django,复选框
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。