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实现调用其他python脚本的方法
Oct 05 Python
wxPython中listbox用法实例详解
Jun 01 Python
浅谈Python NLP入门教程
Dec 25 Python
python 获取字符串MD5值方法
May 29 Python
python递归函数绘制分形树的方法
Jun 22 Python
对Python中数组的几种使用方法总结
Jun 28 Python
Python Cookie 读取和保存方法
Dec 28 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
Python用input输入列表的实例代码
Feb 07 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
Python用Jira库来操作Jira
Dec 28 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函数microtime()用法与说明
2013/12/04 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
ReactJs设置css样式的方法
2017/06/08 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python实现识别手写数字大纲
2018/01/29 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
python3.5安装python3-tk详解
2019/04/26 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python with标签使用方法解析
2020/01/17 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
Django中ORM的基本使用教程
2020/12/22 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
干部行政关系介绍信
2014/01/17 职场文书
司法局火灾防控方案
2014/06/05 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang