python笔记20190102

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

猜你喜欢

转载自blog.csdn.net/csdngouride/article/details/85678303