自学Python之路-django视图
1 认识视图Views
视图函数主要使用HttpRequest对象(请求对象)和HttpResponse对象(响应对象)。当浏览器向服务端请求一个页面的时候,Django先创建一个HttpRequest对象(该对象中包含请求的元数据)然后加载相应的视图,将这个HttpRequest对象作为第1个参数传递给视图函数,视图函数会返回一个HttpResponse对象。
- 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
- 视图就是应用中views.py文件中的函数
- 视图的第一个参数必须为HttpRequest对象,还可能包含下参数如通过正则表达式组获取的位置参数;通过正则表达式组获得的关键字参数
- 视图必须返回一个HttpResponse对象或子对象作为响应。子对象: JsonResponse HttpResponseRedirect
- 视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者。响应内容可以是响应模板,HTML内容,404错误模板,重定向,json数据…


2 请求对象HttpRequest
HttpRequest是从web服务器传递过来的请求对象,经过Django框架封装产生的,封装了原始的Http请求。
- 服务器接收到http请求后,django框架会自动根据服务器传递的环境变量创建HttpRest对象
- 视图的第一个参数必须是 HttpRequest类型的对象
- 在jango.http模块中定义了HttpRequest对象的API
- 使用HttpRequest对象的不同属性值,可以获取请求中多种信息,如下:
| 属性/方法 | 含义 |
| path 字符串 | 表示请求页面的路径,不包含域名 |
| method 字符串 | 表示页面的请求方法,常用值包括"GET"和"POST"。必须使用大写 |
| encoding 字符串 | 表示提交数据的编码方式。一般默认为UTF-8编码 |
| GET 字典类型 | 包含GET请求方法中的所有参数 |
| POST 字典类型 | 包含POST请求方法中的所有参数 |
| FILES 字典类型 | 包含文件上传的信息 |
| COOKIES 字典类型 | 包含所有的Cookies对象 |
| session 字典类型 | 表示当前对话 |
| META 字典类型 | 包含所有的HTTP头部信息,如HTTP_USER_AGENT(客户端Agent信息)、REMOTE_ADDR(客户端的IP地址) |
| user | 表示当前会话 |
GET
def get_phone(request,phone): # request 常用属性 # get传参的获取 print(request.GET) # GET QueryDict 查询字典 print(request.GET.get('usrname')) return HttpResponse(phone) #返回给用户的响应对象
from django.urls import path,re_path from App import views urlpatterns = [ re_path(r'^tel/(\d{11})/$',views.get_phone,name='phone'),
]

method请求方法
def get_phone(request,phone): # 获取请求方法 print(request.method) return HttpResponse(phone) #返回给用户的响应对象

META其他请求属性
def get_phone(request,phone):
# 其他请求属性
print(request.META)
# 客户端地址
print(request.META.get('REMOTE_ADDR'))
# 来源页面
print(request.META.get('HTTP_REFERE'))
return HttpResponse(phone) #返回给用户的响应对象

META中常用的键值:
| 键 | 说明 |
| HTTP_REFERE | 来源页面 |
| REMOTE_ADDR | 客户端ip |
| REMOTE_HOST | 客户端主机 |

常用的方法:
| 方法名 | 说明 |
| get_host() | 获取主机名+端口 |
| get_full_path() | 获取请求路径+查询字符串 |
| is_ajax | 如果是ajax请求返回True |
| build_absolute_uri() | 完整的url |
def get_phone(request,phone): # 常用的方法 print(request.get_full_path()) print(request.get_host()) print(request.build_absolute_uri()) return HttpResponse(phone) #返回给用户的响应对象

......
作者:CARLOS_CHIANG
出处:http://www.cnblogs.com/yaoyaojcy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
posted on 2023-03-09 07:46 CARLOS_KONG 阅读(56) 评论(1) 收藏 举报
浙公网安备 33010602011771号