属性名称 | 属性简单描述 |
---|---|
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>配置完路由后,在浏览器地址栏进行访问,结果如下所示:
图1:Django表单系统的简单应用
is_valid()
,诸如此类接口还有很多,在后续章节我们会详细介绍。request.POST
的返回值是一个 QueryDict 的类字典对象,我们通过可以通过 get 方法进行取值。判断 form 表单的请求方法使用 request.method,这是 form 表单中固定的使用方式。CharField 是表单的字段类型,当然还有其他的字段类型,后续也会进行相应的介绍。从第一步可以看出,表单系统的应用和 Model 模型类的用法非常相似,大家要学会比较性的学习。
本文链接:http://task.lmcjl.com/news/5273.html