CBV的使用
CBV的单继承
class BaseView(View):
def dispatch(self, request, *args, **kwargs):
if request.session.get('username'):
response = super(BaseView,self).dispatch(request, *args, **kwargs)
return response
else:
return redirect('/login.html')
class IndexView(BaseView):
def get(self,request,*args,**kwargs):
return HttpResponse(request.session['username'])
```
多继承
class BaseView(object):
def dispatch(self, request, *args, **kwargs):
if request.session.get(‘username’):
response = super(BaseView,self).dispatch(request, *args, **kwargs)
return response
else:
return redirect(’/login.html’)
class IndexView(BaseView,View):
def get(self,request,*args,**kwargs):
return HttpResponse(request.session['username'])
```
CBV的验证登陆程序
urls.py
urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^login/$’, views.Login.as_view()),
]
from django import views
from django.utils.decorators import method_decorator
class Login(View):
def get(self, request, *args, **kwagrs):
return render(request, ‘login.html’)
def post(self, request, *args, **kwagrs):
user = request.POST.get('username')
pwd = request.POST.get('password')
c = Administrator.objects.filter(username=user, password=pwd).count()
if c:
request.session['is_login'] = True
request.session['username'] = user
return redirect('/index.html')
else:
message = "用户名或密码错误"
return render(request, 'login.html', {'msg': message})