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中mechanize库的简单使用示例
Jan 10 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
python中的lambda表达式用法详解
Jun 22 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
取numpy数组的某几行某几列方法
Apr 03 Python
Django 表单模型选择框如何使用分组
May 16 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
python 内置函数汇总详解
Sep 16 Python
python实现四人制扑克牌游戏
Apr 22 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Apr 04 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中文字符串截取函数
2013/11/12 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
AngularJs中route的使用方法和配置
2016/02/04 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
python样条插值的实现代码
2018/12/17 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
Servlet的生命周期
2013/08/25 面试题
护理职业应聘自荐书
2013/09/29 职场文书
初一科学教学反思
2014/01/27 职场文书
优秀教师工作感言
2014/02/16 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书