Django表单提交后实现获取相同name的不同value值


Posted in Python onMay 14, 2020

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))

运行后,在浏览器表单中输入:

Django表单提交后实现获取相同name的不同value值

打开chrome ,提交表单,看FormData,其实浏览器已经向后台提交了两个name 为'key '的值。

Django表单提交后实现获取相同name的不同value值

后台也成功接收到一个列表 ['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从后端查询回显到前端以及表单的提交到服务器操作

Django表单提交后实现获取相同name的不同value值

这个表格是我以下代码出现的效果,以下代码也可以实现图中修改保存删除操作。

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")

以上这篇Django表单提交后实现获取相同name的不同value值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python base64编码解码实例
Jun 21 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python机器学习之决策树算法
Dec 22 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
Python之用户输入的实例
Jun 22 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
Django migrate报错的解决方案
May 20 Python
python opencv旋转图片的使用方法
Jun 04 Python
django模板获取list中指定索引的值方式
May 14 #Python
Django admin管理工具TabularInline类用法详解
May 14 #Python
django创建超级用户时指定添加其它字段方式
May 14 #Python
简单了解python列表和元组的区别
May 14 #Python
Django 解决阿里云部署同步数据库报错的问题
May 14 #Python
Python参数传递实现过程及原理详解
May 14 #Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 #Python
You might like
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python中的生成器和yield详细介绍
2015/01/09 Python
python中os模块详解
2016/10/14 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python用for循环求和的方法总结
2019/07/08 Python
python中的global关键字的使用方法
2019/08/20 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
投标人法定代表人授权委托书格式
2014/09/28 职场文书
党校党性分析材料
2014/12/19 职场文书
主持人大赛开场白
2015/05/29 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android