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微信公众号之关键词自动回复
Jun 15 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
python 阶乘累加和的实例
Feb 01 Python
django使用django-apscheduler 实现定时任务的例子
Jul 20 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
Django用户认证系统 组与权限解析
Aug 02 Python
python中property属性的介绍及其应用详解
Aug 29 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
python实现人机五子棋
Mar 25 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
如何用python 操作zookeeper
Dec 28 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 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代码实现页面伪静态的方法
2015/07/25 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
jQuery 操作XML入门
2008/12/25 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python 中split 和 strip的实例详解
2017/07/12 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
实习协议书范本
2014/04/22 职场文书
销售顾问工作计划书
2014/09/15 职场文书
2015年信访工作总结
2015/04/07 职场文书
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js