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 相关文章推荐
Django框架中的对象列表视图使用示例
Jul 21 Python
Python实现批量转换文件编码的方法
Jul 28 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
python素数筛选法浅析
Mar 19 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
pyshp创建shp点文件的方法
Dec 31 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
利用python做数据拟合详情
Nov 17 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP 验证码的实现代码
2011/07/17 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
利用Python计算KS的实例详解
2020/03/03 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
python中的时区问题
2021/01/14 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
生日邀请函范文
2014/01/13 职场文书
打架检讨书500字
2014/01/29 职场文书
汽车维修求职信
2014/06/15 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
医院党建工作总结2015
2015/05/26 职场文书
企业培训简报范文
2015/07/20 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript