Django表单提交后实现获取相同name的不同value值

作者:yes1cpp 时间:2023-08-11 01:59:31 

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)&para;

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")

来源:https://blog.csdn.net/yes1cpp/article/details/42405251

标签:Django,表单提交,name,value
0
投稿

猜你喜欢

  • pyCharm 实现关闭代码检查

    2023-05-14 18:48:01
  • python爬虫智能翻页批量下载文件的实例详解

    2023-06-20 14:17:12
  • GDAL 矢量属性数据修改方式(python)

    2021-01-30 20:53:28
  • Python实现转换图片背景颜色代码

    2023-02-13 09:02:54
  • python网络爬虫实战

    2021-04-16 13:31:07
  • MySQL切分查询用法分析

    2024-01-28 01:11:35
  • AJAX打造博客无刷新搜索

    2007-08-23 08:48:00
  • 设计工作者必须了解的常识

    2008-04-06 13:56:00
  • ROS  TF坐标变换基本概念及使用案例

    2022-02-01 10:25:35
  • Python中的变量及简单数据类型应用

    2021-06-13 09:45:26
  • MySQL中ROUND函数进行四舍五入操作陷阱分析

    2024-01-15 04:02:04
  • php写入mysql中文乱码的实例解决方法

    2023-10-10 01:36:49
  • Flask框架运用Ajax实现数据交互的示例代码

    2023-11-19 19:15:19
  • M1芯片Mac上Anaconda的暂时替代(miniforge)

    2022-12-12 00:32:43
  • Pygame 精准检测图像碰撞的问题

    2022-01-17 17:56:13
  • js+css在交互上的应用

    2024-04-17 10:37:49
  • python实现字符串和字典的转换

    2023-03-02 02:57:18
  • Python HTTP客户端自定义Cookie实现实例

    2023-12-16 01:19:30
  • Python基于FTP模块实现ftp文件上传操作示例

    2024-01-02 00:04:38
  • [PHP]常用正则表达式收集

    2024-05-03 15:34:49
  • asp之家 网络编程 m.aspxhome.com