视图函数,简称视图,本质上是一个简单的Python函数,它接受Web请求而且返回Web响应。响应的内容能够是HTML网页,重定向,404错误,图片等任何东西,但本质是返回响应对象HttpResponse。php
视图函数的代码写哪里均可以,但通常约定俗成设置在项目或应用程序目录中的views.py文件中html
视图案例:前端
from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
解析:python
django.shortcuts
模块导入了HttpResponse
类,以及Python的datetime
库。current_datetime
函数。它就是视图函数。每一个视图函数都使用HttpRequest
对象做为第一个参数,而且一般称之为request
。 视图函数的名字能反映除它的功能便可HttpResponse
对象,其中包含生成的响应。每一个视图函数都负责返回一个HttpResponse
对象。django将请求报文中的请求行、首部信息、内容主题封装成HttpRequest类中的属性。除特殊说明外,其余均为只读
1. request.POST # 前台Post传过来的数据,包装到POST字典中 2. request.GET # 前台浏览器窗口里携带的数据,包装到GET字典中 3. request.method # 前台请求的方式 4. request.body # post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1 5. request.path # 取出请求的路径,取不到数据部分 6. request.encoding #一个字符串,表示提交的数据的编码方式,默认'utf-8' 7. request.META #一个标准的Python 字典,包含全部的HTTP 首部 CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。 CONTENT_TYPE —— 请求的正文的MIME 类型。 HTTP_ACCEPT —— 响应可接收的Content-Type。 HTTP_ACCEPT_ENCODING —— 响应可接收的编码。 HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。 HTTP_HOST —— 客服端发送的HTTP Host 头部。 HTTP_REFERER —— Referring 页面。 HTTP_USER_AGENT —— 客户端的user-agent 字符串。 QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。 REMOTE_ADDR —— 客户端的IP 地址。 REMOTE_HOST —— 客户端的主机名。 REMOTE_USER —— 服务器认证后的用户。 REQUEST_METHOD —— 一个字符串,例如"GET" 或"POST"。 SERVER_NAME —— 服务器的主机名。 SERVER_PORT —— 服务器的端口(是一个字符串)。 -------------------------------- 除CONTENT_LENGTH 和 CONTENT_TYPE 以外,请求中的任何 HTTP 首部转换为 META 的键时, 都会将全部字母大写并将链接符替换为下划线最后加上 HTTP_ 前缀。 --------------------------------- 8. request.FILES #包含全部的上传文件信息。 9. request.COOKIES #字典格式,键和只都是字符串,包含全部的cookie 10. request.session #当前会话,只有当django启用会话时才可用 11. request.user(用户认证组件) 一个 AUTH_USER_MODEL 类型的对象,表示当前登陆的用户。 若是用户当前没有登陆,user 将设置为 django.contrib.auth.models.AnonymousUser 的一个实例。 你能够经过 is_authenticated() 区分它们。 例如: if request.user.is_authenticated(): # Do something for logged-in users. else: # Do something for anonymous users. user 只有当Django 启用 AuthenticationMiddleware 中间件时才可用。 ----------------------------------------------------------------------------- 匿名用户 class models.AnonymousUser django.contrib.auth.models.AnonymousUser 类实现了django.contrib.auth.models.User 接 口,但具备下面几个不一样点: id 永远为None。 username 永远为空字符串。 get_username() 永远返回空字符串。 is_staff 和 is_superuser 永远为False。 is_active 永远为 False。 groups 和 user_permissions 永远为空。 is_anonymous() 返回True 而不是False。 is_authenticated() 返回False 而不是True。 set_password()、check_password()、save() 和delete() 引起 NotImplementedError。 New in Django 1.8: 新增 AnonymousUser.get_username() 以更好地模拟 django.contrib.auth.models.User。
注:FILES 只有在请求的方法为POST 且提交的ajax