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正则表达式re模块详细介绍
May 29 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
python3爬取数据至mysql的方法
Jun 26 Python
Python的iOS自动化打包实例代码
Nov 22 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
python实现淘宝购物系统
Oct 25 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 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
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
详细介绍Ruby中的正则表达式
2015/04/10 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
什么是规则表达式
2012/05/03 面试题
英文求职信结束语大全
2013/10/26 职场文书
战略合作意向书范本
2014/04/01 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
店面出租协议书范本
2014/11/28 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
法人身份证明书
2015/06/18 职场文书
医院感染管理制度
2015/08/05 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android