Django之form表单

本文介绍了Django中form表单的使用,包括Django的请求方式、前端Web的form表单元素、Django的form表单及其CSRF校验机制。重点讲述了如何在Django中使用form表单类进行数据校验,包括自定义form校验的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Django之form表单


Django的请求

默认页面请求都是get请求
Request是传递到视图的请求,里面包含请求的各种参数:

常用的请求方式:
Get:默认是get请求,请求数据以明文形式放在路由上,get的格式是以?开头,键等于值的形式,以&来分割键值对,通常用于和服务器获取资源。
Post:请求数据隐藏发送,安全系数更高。通常用于向服务器提交资源。

Django默认提供了处理get和post请求的参数,其他类型的请求需要使用django的视 图类来自定义。

request的函数函数说明
request.COOKIES接收cookie的方法
request.GET获取get请求数据的方法
request.POST获取post请求数据的方法
request.FILES获取文件上传请求数据的方法
request.method获取请求的方法
request.path请求的路径
request.get_raw_uri请求的url
request.META请求的详细参数
request.META.HTTP_USER_AGENT请求端系统
request.META.OS用户请求头,返回请求浏览器版本
request.META.HTTP_HOST请求的主机
request.META.HTTP_REFERER请求的来源
前端Web的form表单

在这里插入图片描述
Action 提交的地址,默认是当前路由。
Method 提交的方法,默认是get
Input 是表单的元素
Name参数用来做传参的值
Submit会自动提交当前表单的数据
在这里插入图片描述

Django的form表单

csrf跨域伪造攻击

使用当前浏览器还在生效状态的cookie对指定网站进行操作。最初针对的是银行网站的转账。
在这里插入图片描述
Django本身会对csrf进行校验,在django的1.4版本之前,csrf默认关闭,需要在settings当中手动开启,在1.4之后,默认开启.
在这里插入图片描述
在django的任何post请求,都会在请求之初,给用户下发一下串用来校验身份的编码,并且每次请求不一样。
在这里插入图片描述
如果不加csrf_token校验,会发生csrf错误
在这里插入图片描述

使用django的csrf校验

1、返回post登陆页面的时候要用render方法,render方法和render_to_response方法的功能类似,但是会在第一个参数返回request,如果不返还,前端无法调用 {% csrf_token %}
在这里插入图片描述
2、在form表单内部的第一行,插入csrf校验,使用{% csrf_token %}
在这里插入图片描述
{% csrf_token %}标签实际上就是在前端的form表单当中生成了一个hidden隐藏域,name为csrfmiddlewaretoken,value是csrf校验的值
存入数据库的步骤和get请求类似
在这里插入图片描述

Django form表单类

表单功能在开发的过程当中有一半的需求是获取数据,另一半校验数据。针对于表单,校验分为前端校验和后端校验:
前端校验就是通过js或者jq脚本对form表单输入的数据进行校验,形象,直观,有利于对用户进行提醒,用户体验好。
后端校验就是在视图当中或者python后端当中对提交的数据进行校验,比较安全。
前端校验我们可以通过各种校验框架进行校验,django推出了自己的form表单类来定义后端校验。
Form表单类是有django定义的,可以自动生成前端form表单代码的表单类,已经完成大部分的校验功能。
在这里插入图片描述
常用的form表单样式:
as_p 表单显示为段落标签形式,一个字段为一行
在这里插入图片描述
as_ul 表单显示为无序列表样式
在这里插入图片描述
使用for循环遍历出来再用表格装饰,显示为表格样式
在这里插入图片描述
Django 的form表单没有携带form外标签,也没有提交按钮,这样的设计更方便开发者修改样式
Form表单类通用的参数:

Max_length最大长度
in_length最小长度
required为False为可以为空,默认为True
labelForm表单的标签内容
Help_text帮助文档
自定义form校验

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值