CBV & FBV
CBV:指视图函数为类。
FBV:指视图函数为函数类型。
web框架的实质就是通过url-找到->函数,然后执行视图函数,模版渲染,把字符串返回给浏览器!
这一段时间以来的操作,都是用的FBV类型来实现url ----> 函数。
现在聊聊CBV的方式,以登录login举例。(全部是固定写法,先记住它!)
1、视图函数views中:
from django.views import View #先导入模块
class Login(View): #定义一个类,继承父类View -------> 没错,就是导入的模块
"""
- 在类内定义不同的http方法,我们可以点进View中去查看,官方给的方法如下:
- http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
- 对于这些方法,我们常用的只有四个,同时这四个分别代表不同的操作:
get 查
post 创建
put 更新
delete 删除
"""
#在View父类中,我们看源码发现有个 dispatch 函数,这个函数是用来执行类内自定义的方法的。
#所以对于这个函数,我们可以重写,以增加我们需要的功能!当然如果不需要的话,那就不要重写。
def dispatch(self, request, *args, **kwargs):
print("before")
obj = super(Login,self).dispatch(self, request, *args, **kwargs)
print("after")
return obj
#不管定义什么方法,都需要写一个形参request,用于接收浏览器发送过来的请求信息.
def get(self,request):
return render(request,"login.html")
def post(self,request):
print(request.POST.get("user")) #有没有获取到数据
return HttpResponse("login.POST")
2、urls.py路由系统文件中:
"""注意后边函数,也是固定的写法:模块.类名.as_view()"""
url(r'^login.html$', views.Login.as_view()),
3、模版文件login.html:#form 表单提交只有两种方式:get和POST
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST" action="/login.html">
<input name="user" type="text">
<input type="submit" value="提交">
</form>
</body>
</html>