Mr.RainsdRop的django笔记:Django与checkbox的联动

前言

米娜桑,好久不见啊!
最近一段时间又是期末考试又是疫情的,搞得博主头皮发麻。不过所幸也是安全到家了,顶多需要居家隔离几天。
看到这篇博客的小伙伴要注意安全,尽量少出行,出门戴口罩。
Mr.RainsdRop的django笔记:Django与checkbox的联动_第1张图片
不多废话,进入主题。


放假前实训老师让我们做一个小项目,用Django框架来写一个小项目,实现一个简易的网上商店系统(参考京东,只是参考,和你在吃泡面时泡面盒上的图片仅供参考的道理是一样的)。

大家也知道(并不是),博主我是一个纯纯的web废物,完全看不懂JSCSS(后来发现还存在JQ这么高级的东西),html也是基本上看不懂。所以即使是在老师让我们自己去找个前台与后台模板用的前提下博主的进程也是十分缓慢。
不过经过这几天的折磨,博主的「MC物品售卖网站1.0」也算是完工了。

在整个过程中最折磨人的当属「购物车」模块的设计。设计过程中遇到了很多麻烦,用了各种方法去尝试,还被迫的学习了一些简单的js与css,现在也是勉勉强强的能够看懂一些js与css了(还能试着写一些)。


类型为checkbox的input标签

关于「购物车」模块,博主是在html中使用了类型为checkboxinput标签(不知道是不是这样叫的,如果有误的话欢迎在评论区指正):

<input name="cartCheckBox" type="checkbox" value="{{i.id}}"id="checkbox{{forloop.counter}}" onclick="selectSingle()"/>

效果如下(这不是上面那一句代码产生的!!!重点是第一列的可选框!!!):
Mr.RainsdRop的django笔记:Django与checkbox的联动_第2张图片


写完这里之后博主开始思考:怎么在views.py里获取到被选中的购物记录呢?

大家如果平时经常网购的话就会注意到,在我们最后结账的时候并不是强制性的一次性清空购物车,我们是可以勾选出一些商品然后再付款的。 而没有被支付的商品会一直保留在你的购物车中,直到你删除它或者付款。

这就难住博主了:我不知道啥是checkbox啊!
(实际上input是啥我也不明白,不过用的时候还没出过差错罢了)

功夫不负有心人,在经过漫长的一段搜索时间之后,终于让我找到了答案——request.POST.getlist(tagname)


Django与checkbox的联动

html部分代码:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<form action="{% url 'Reception_test' %}" enctype="multipart/form-data" method="post">
    {% csrf_token %}
    <input name="cartCheckBox" type="checkbox" value="1"/>a<br>
    <input name="cartCheckBox" type="checkbox" value="2"/>b<br>
    <input name="cartCheckBox" type="checkbox" value="3"/>c<br>
    <input name="cartCheckBox" type="checkbox" value="4"/>d<br>
    <input name="cartCheckBox" type="checkbox" value="5"/>e<br>
    <input name="cartCheckBox" type="checkbox" value="6"/>f<br>
    <input type="submit" value="Test" href="">
form>
body>
html>

views.py部分代码:

#用于显示页面
def Test(request):
    return render(request,'test.html')

#功能实现
def test(request):
    list=request.POST.getlist('cartCheckBox')
    print(list)
    return HttpResponse('ok')

request.POST.getlist(tagname)返回的是所有name属性值为tagname的标签的value属性的值所组成的一个列表。
而如果该标签为type=checkboxinput标签,那么只有当该标签被选中时才会返回它的value值。

Mr.RainsdRop的django笔记:Django与checkbox的联动_第3张图片
那我们就可以用这个方法拿到我们想要的值了。


这只是我突然起了兴趣写的东西,可能讲的不是很清楚,欢迎大家在讨论区里留言,相互学习。
话说这东西难搞是挺难搞,不过还是蛮有意思的。


吾日三省吾身:日更否?刷题否?快乐否?
更新了,但不是日更;已刷;平静
路漫漫其修远兮,吾将上下而求索

你可能感兴趣的:(瞎鸡儿写,django,mr,python)