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中使用序列的方法
Aug 03 Python
Python常用算法学习基础教程
Apr 13 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Python3模拟curl发送post请求操作示例
May 03 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
django重新生成数据库中的某张表方法
Aug 28 Python
Python csv模块使用方法代码实例
Aug 29 Python
python字符串格式化方式解析
Oct 19 Python
Python类及获取对象属性方法解析
Jun 15 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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 get_meta_tags()函数
2014/05/12 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
浅谈python数据类型及类型转换
2017/12/18 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
全球性的在线购物网站:Zapals
2017/03/22 全球购物
SQL面试题
2013/04/30 面试题
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
写好Python代码的几条重要技巧
2021/05/21 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Python装饰器的练习题
2021/11/23 Python
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技