2019-1-2

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()),
]


views.py

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})

你可能感兴趣的:(study,python)