| 属性名称 | 属性简单描述 |
|---|---|
| path | 表示提交请求页面的URL的字符串,不包括域名。 |
| method |
表示提交请求时使用的HTTP方法。这是最常用的属性,比如: if request.method == 'GET': ...处理GET请求数据并响应 elif request.method == 'POST': ....处理POST请求数据并响应 |
| GET | QueryDict查询字典的对象,包含get请求方式的所有数据 |
| POST | QueryDict查询字典的对象,包含post请求方式的所有数据 |
| COOKIES | Python字典,包含所有的cookie,键和值都为字符串,浏览器端实现会话保持。 |
| SESSION | 是一个可读写的类字典对象,表示当前session。服务端实现会话保持。 |
| FILES |
类似于字典的对象,包含所有的上传文件信息 FILES 的键来自于<input type="file" name="" /> 中的 name 。 FILES 的值是一个标准的Python字典。 注意: FILES 只有在请求的方法是 POST ,并且提交的 <form> 包含enctype="multipart/form-data" 时才包含数据。否则, FILES 只是一个空的类字典对象。 |
| META | 一个标准的Python字典,包含所有有效的HTTP头信息。有效的头信息与客户端和服务器有关。示例:request.META['REMOTE_ADDR'] 获取请求方的客户端IP地址 |
class Form(BaseForm,metaclass=DeclarativeFieldsMetaclass)
Form 中指定了基类 BaseForm 和元类 DeclarativeFieldsMetaclass。BaseForm 中定义了生成 HTML与字段值的校验方法,而 DeclarativeFieldsMetaclass 则定义了创建 Form 对象的过程。要应用 Django 表单首先就要创建 Form 对象,并定义表单的字段分别是 user_name 与 user_password,代码如下所示:
#第一步index/views.py 创建Form对象。
from django import forms
class LoginForm(forms.Form): #继承自Form类,
user_name=forms.CharField(label="用户名",min_length=6,max_length=12)#新建表单字段
user_password=forms.CharField(label="用户密码",min_length=8)
#第二步围绕form对象完成表单。
def login(request):#定义登录处理函数login()
if request.method == "POST": #request是 HttpRequest的对象,利用它的的method属性,判断请求方法。
form = LoginForm(request.POST)#实例化对象,post提交数据是QuerySet类型的字典,GET方法与其一样。
if form.is_valid(): #提供验证判断是否有效,成立则返回是Ture
return HttpResponse("登录成功")
else:
form=LoginForm()
return render(request, "index/login.html",locals())
并在 templates/index 目录下新建 login.html 文件,代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录页面</title>
</head>
<body>
<form action="/login/" method="post">
<!-- 防止 CSRF 攻击-->
{% csrf_token %}
{{ form}}
<input type="submit" value="提交">
</form>
</body>
</html>
配置完路由后,在浏览器地址栏进行访问,结果如下所示:is_valid(),诸如此类接口还有很多,在后续章节我们会详细介绍。request.POST的返回值是一个 QueryDict 的类字典对象,我们通过可以通过 get 方法进行取值。判断 form 表单的请求方法使用 request.method,这是 form 表单中固定的使用方式。CharField 是表单的字段类型,当然还有其他的字段类型,后续也会进行相应的介绍。从第一步可以看出,表单系统的应用和 Model 模型类的用法非常相似,大家要学会比较性的学习。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有