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中获取网页状态码的两个方法
Nov 03 Python
Python随机生成一个6位的验证码代码分享
Mar 24 Python
用Python的Django框架完成视频处理任务的教程
Apr 02 Python
详解在Python和IPython中使用Docker
Apr 28 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
对python中Json与object转化的方法详解
Dec 31 Python
django url到views参数传递的实例
Jul 19 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
python topk()函数求最大和最小值实例
Apr 02 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 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中explode与split的区别介绍
2012/10/03 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python实现某论坛自动签到功能
2019/08/20 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
辅导员评语
2014/05/04 职场文书
村委会贫困证明范本
2014/09/17 职场文书
Golang 实现WebSockets
2022/04/24 Golang
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server