Django框架之视图
Django框架之视图层
什么是视图函数
视图函数,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数。并且这里的视图函数并不仅仅指代函数,也包括类。
请求对象
Django将http协议请求报文中的请求行、首部信息、内容主体封装到了HttpRequest对象中。将HttpRequest对象当做参数传给视图函数中去,在视图函数中,通过访问该对象的属性便可以提取http协议的请求数据
常用属性
-
method
获取请求方式
-
GET
获取GET请求携带的数据,将数据封装成QueryDict对象,通过get(key)方法获取指定值,如果该值有多个,使用getlist
-
POST
获取POST请求携带的数据,将数据封装成QueryDict对象,通过get(key)方法获取指定值,如果该值有多个,使用getlist
-
FILES
获取表单提交上来的文件
-
path
获取url地址的路径部分
-
get_full_path()
获取完整的url地址
-
COOKIES
获取所有的cookie
-
session
一个既可读又可写的类似于字典的对象,表示当前的会话
-
is_ajax()
判断是否是通过ajax发送的请求
响应对象
-
HttpResponse
向前端页面返回一个字符串
-
render
render(request, template_name, context) 参数: 1、request:必须,用于生成响应的请求对象,固定必须传入的第一个参数 2、template_name:必须,要使用的模板的完整名称,必须传入,render默认会去templates目录下查找模板文件 3、context:可选,可以传入一个字典用来替换模块文件中的变量
-
redirect
返回一个重定向地址,可以使接口也可以是外部url
-
JsonResponse
返回一个json字符串
# 方式一: import json def my_view(request): data=['gredae','dijia'] return HttpResponse(json.dumps(data) ) # 方式二: from django.http import JsonResponse def my_view(request): data=['gredae','dijia'] return JsonResponse(data,safe=False) #默认safe=True代表只能序列化字典对象,safe=False代表可以序列化字典以外的对象
FBV和CBV
之前我们讲过视图函数不仅仅是函数,还可以是类。
基于函数的视图:Function base view
urls.py
from django.urls import url
from app01 import views
urlpatterns = [
url(r'^login/',views.login), # 必须调用类下的方法as_view
]
views.py
from django.shortcuts import render
def login(request):
return render(request,'login.html')
基于类的视图:Class base view
urls.py
from django.urls import url
from app01 import views
urlpatterns = [
url(r'^login/',views.LoginView.as_view()), # 必须调用类下的方法as_view
]
views.py
from django.shortcuts import render
from django.views import View
class LoginView(View):
# 处理GET请求
def get(self,request):
return render(request,'login.html')
# 处理POST请求
def post(self,request):
return render(request,'login.html')