Django表单提交后实现获取相同name的不同value值
作者:yes1cpp 发布时间:2023-08-11 01:59:31
i前端:nput_test.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Search</title>
<script>
</script>
</head>
<body>
<div><p>{{ result }}</p></div>
<form action="" method="post">{% csrf_token %}
<input type="text" name="key">
<input type="text" name="key">
<input type="submit" value="Search" >
</form>
</body>
</html>
两个<input >标签name都是'key'
后台:Django views.py
def setting(request):
if request.method == 'POST':
result_list = request.POST.getlist('key', '')
result = str(result_list)
return render_to_response('input_test.html', locals(), context_instance=RequestContext(request))
else:
return render_to_response('input_test.html', locals(), context_instance=RequestContext(request))
运行后,在浏览器表单中输入:
打开chrome ,提交表单,看FormData,其实浏览器已经向后台提交了两个name 为'key '的值。
后台也成功接收到一个列表 ['1', '2']。
主要是这个API request.POST.getlist(),可以接收到所有共享同一个name的value,
QueryDict.getlist(key, default)¶
Returns the data with the requested key, as a Python list. Returns an empty list if the key doesn't exist and no default value was provided.
It's guaranteed to return a list of some sort unless the default value was no list.
参考:http://stackoverflow.com/questions/14348321/getting-distinct-values-from-inputs-that-share-the-same-name
补充知识:django中form从后端查询回显到前端以及表单的提交到服务器操作
这个表格是我以下代码出现的效果,以下代码也可以实现图中修改保存删除操作。
1:首先你得创建一张表,在这里建表语句我就不再写了,再也简单不过了。(别忘了加点数据哦!)
2:将表的数据通过view.py的函数返回到前端。在这里stu是表名,将所有的返回结果all通过一个data字典传到前端的all里面去
def showstu(request):
all=stu.objects.all()
data={
"all":all
}
return render(request,"searchstu.html",context=data)
3:有数据我们就可以拿到前端来展示了。
4 :新建一个searchstu.html文件,用来展示用的。
这个是最简单的表用来提示用的
<table border="1" cellpadding="0" >
<tr >
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>班级</td>
<td colspan="3">操作</td>
</tr>
</table>
这个表是实现我们的功能的表
{% for student in all %}
<form action="{% url 'homework:updatestu' %}" method="get" >
<table border="1" cellpadding="0">
<tr><td>
<input type="text" name="s_id" value={{student.id}} style="display:none">
</td><td>
<input type="text" name="s_name" value={{student.stu_name}} >
</td><td>
<input type="text" name="s_age"value={{ student.stu_age}}>
</td><td>
<input type="text" name="s_sex"value={{ student.stu_sex}}>
</td><td>
<input type="text" name="s_cla" value={{ student.stu_class}}>
</td><td>
<input type="button" id="a" value="修改" οnclick="update(this)">
#在这里用了两种方法提交到服务器,一种是submit提交,还有一种是超链接提交。
</td><td><input type="submit" value="保存" οnclick="save(this)">
</td><td><a href="/homework/delstu/{{ student.id }}" rel="external nofollow" >
<input type="button" value="删除"></a>
</td></tr>
</table>
</form>
{% endfor %}
好了查询功能已经做好了我们可以通过url访问了
url(r"^showstu/", views.showstu,name="showstu"),
现在起要操作剩下的功能了,在这里的一个比较笨的办法,要想实现点击对应的按钮删除或者修改哪一个,就要把每行都设置成一个form提交表单。
因此我把form放在for循环内部,这样循环一条就会多一个form表单。
5:实现提交后后端的处理函数,通过get获取。
更新操作
def updatestu(request):
id = request.GET.get("s_id")
name=request.GET.get("s_name")
sex=request.GET.get("s_sex")
age=request.GET.get("s_age")
cla=request.GET.get("s_cla")
#获取数据库中这个id将和这个id有关的数据设置成你get到前面的值,别忘记保存!修改完后直接刷新这个页面也就是重定向到这个页面
stu1=stu.objects.filter(pk=id).first()
stu1.stu_age=age
stu1.stu_class=cla
stu1.stu_sex=sex
stu1.stu_name=name
stu1.save()
return HttpResponseRedirect("/homework/showstu")
删除操作
def delstu(request,id):
stu1=stu.objects.filter(pk=id).first()
stu1.delete()
return HttpResponseRedirect("/homework/showstu")
来源:https://blog.csdn.net/yes1cpp/article/details/42405251
猜你喜欢
- 以下插件是我在项目中经常使用的jQuery插件,不见得是最好的,但是我目前接触到的jQuery插件中最适合我的。01. jQuery.Fle
- 本文实例讲述了Python实现对一个函数应用多个装饰器的方法。分享给大家供大家参考,具体如下:下面的例子展示了对一个函数应用多个装饰器,可以
- 这一版,对虹软的功能进行了一些封装,添加了人脸特征比对,比对结果保存到文件,和从文件提取特征进行比对,大体功能基本都已经实现,可以进行下一步
- 本文实例讲述了python在windows命令行下输出彩色文字的方法。分享给大家供大家参考。具体分析如下:默认情况下python在控制台输出
- Oracle数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出
- 只要你的Web开发知识不是语文老师教的,那么你应该已经知道一个合格的开发者应该永远抱着怀疑的眼光看用户提交的数据。你不仅需要在前端通过表单或
- __init__ 方法是什么?使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法
- 步骤一:申请百度地图密钥;JavaScript API v1.4以及以前的版本无序申请秘钥(ak),自v1.5版本开始需要先申请秘钥(ak)
- PDOStatement::errorCodePDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLST
- go get 和 go install 的区别先看结论:go get: 对 go mod 项目,添加,更新,删除&nbs
- 我就废话不多说了,直接上代码吧!第一种def test1(): l = [] for i in range(1000
- 关于Pillow与PILPIL(Python Imaging Library)是Python一个强大方便的图像处理库,名气也比较大。不过只支
- 字符串在内存中是不可变的,放在只读内存段,因此你可以使用str[0]来访问,但是不能使用str[0]='a'来修改。修改字符
- atom(一款开源的代码编辑器)是github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持
- 相信很多初学python的小伙伴都会遇到这样的坑:环境变量配置不好,无法正常启动python。那么环境变量究竟是个什么东西呢?为什么要设置它
- 本文实例为大家分享了python3设计签名小程序的具体代码,供大家参考,具体内容如下首先,上一下要做的效果图:先是这样一个丑陋的界面(我尽力
- 注:IE8以前的版本均不支持该特性为了向文档中插入生成内容,可以使用:before与:after伪元素。如,我想在所有链接的后面加上&quo
- 在网页制作中,表单中的对象总是给人一种单调与沉闷的感觉,比如说按钮、文本框等,它们一成不变的模样与颜色
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:jquery读取xml文件 <!DOCTYPE html PUBLIC "
- 简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的P