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写CUDA程序的方法
Mar 27 Python
Python学习小技巧之列表项的拼接
May 20 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
Python贪心算法实例小结
Apr 22 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
解决python Markdown模块乱码的问题
Feb 14 Python
django框架防止XSS注入的方法分析
Jun 21 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
详解基于python-django框架的支付宝支付案例
Sep 23 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数据库处理封装类实例
2016/12/24 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
python实现中文输出的两种方法
2015/05/09 Python
详解Python中heapq模块的用法
2016/06/28 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
Java里面如何创建一个内部类的实例
2015/01/19 面试题
内容编辑个人求职信
2013/12/10 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
中国梦团日活动总结
2014/07/07 职场文书
群众路线领导对照材料
2014/08/23 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
教师辞职书范文
2015/02/26 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
信息技术研修心得体会
2016/01/08 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
使用Python开发冰球小游戏
2022/04/30 Python