自学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)    #返回给用户的响应对象

 

......

posted on 2023-03-09 07:46  CARLOS_KONG  阅读(25)  评论(1编辑  收藏  举报

导航