Django项目实战 - 基于类定义用户登录

文章重点:

1、基于类定义用户登录逻辑

2、继承base的View类来实现 from django.views.generic.base import View

 

基于函数的登录逻辑

def user_login(request):
    if request.method == "POST":
        user_name = request.POST.get("username", "")
        pass_word = request.POST.get("password", "")
        user = authenticate(username=user_name, password=pass_word)
        if user:
            login(request, user)
            return render(request, "index.html")
        else:
            return render(request, "login.html", {"msg": u"用户名或密码错误"})

    elif request.method == "GET":
        return render(request, "login.html", {})

 

基于类的登录逻辑

直接继承View的 get 和 post方法 ,自动调用。

class LoginView(View):
    def get(self, request):
        return render(request, "login.html", {})

    def post(self, request):
        user_name = request.POST.get("username", "")
        pass_word = request.POST.get("password", "")
        user = authenticate(username=user_name, password=pass_word)
        if user:
            login(request, user)
            return render(request, "index.html")
        else:
            return render(request, "login.html", {"msg": u"用户名或密码错误"})

 

修改URL调用方式

from users.views import LoginView


urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
    url(r'^$', TemplateView.as_view(template_name="index.html"), name="index"),
    url(r'^login/$', LoginView.as_view(), name="login"),    # 调用 as_view() 这个方法来实现
]

 

posted @ 2017-03-01 21:37  Vincen_shen  阅读(375)  评论(0)    收藏  举报