一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。
视图函数的代码写哪里都可以,但一般约定俗成设置在项目或应用程序目录中的 views.py 文件中。下面是一个以HTML文档的形式返回当前日期和时间的视图:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "It is now %s." % now
return HttpResponse(html)
让我们来逐行解释下上面的代码:
首先,我们从 django.http
模块导入了HttpResponse
类,以及Python的datetime
库。
接着,我们定义了current_datetime
函数。它就是视图函数。每个视图函数都使用HttpRequest
对象作为第一个参数,并且通常称之为request
。
注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime
,是因为这个名称能够比较准确地反映出它实现的功能。
这个视图会返回一个HttpResponse
对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse
对象。
Django使用请求和响应对象来通过系统传递状态。
当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
每个视图负责返回一个HttpResponse对象。
django将请求报文中的请求行、首部信息、内容主体封装成 HttpRequest 类中的属性。 除了特殊说明的之外,其他均为只读的
request.scheme:代表请求的方案,http或者https
request.path:请求的路径,比如请求127.0.0.1/org/list,那这个值就是/org/list
request.method:表示请求使用的http方法,GET或者POST请求
request.encoding:表示提交数据的编码方式
request.GET:获取GET请求
request.POST:获取post的请求,比如前端提交的用户密码,可以通过request.POST.get()来获取
request.COOKIES:包含所有的cookie
request.session:一个既可读又可写的类似于字典的对象,表示当前的会话。只有当Django 启用会话的支持时才可用。
request.FILES:一个类似于字典的对象,包含所有的上传文件信息。 FILES 中的每个键为 中的name,值则为对应的数据。
注意,FILES 只有在请求的方法为POST 且提交的