自学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 阅读(31) 评论(1) 编辑 收藏 举报