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简单猜数游戏实例
Jul 09 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
Selenium的使用详解
Oct 19 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
使用Python在Windows下获取USB PID&amp;VID的方法
Jul 02 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
Python pip使用超时问题解决方案
Aug 03 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
python 实现的截屏工具
May 08 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 无限级 SelectTree 类
2009/05/19 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
python中函数默认值使用注意点详解
2016/06/01 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现Linux中的du命令
2017/06/12 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
python实现简单http服务器功能
2018/09/17 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
怎样自定义一个异常类
2016/09/27 面试题
银行委托书范本
2014/09/28 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
爱心募捐通知范文
2015/04/27 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫