Login implemented by django class method

1. Users views.py is added as follows:

# _*_ coding:utf-8 _*_
from django.shortcuts import render
from django.contrib.auth import authenticate, login
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
# 导入view类
from django.views.generic.base import View
from .models import UserProfile

# Create your views here.

#新增定义 loginViw 方法继承View
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 is not None:
            login(request, user)
            return render(request, "index.html", {'nickname': user})
        else:
            return render(request, "login.html", {"msg": u"用户名或密码错误"})



class CustomBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user = UserProfile.objects.get(Q(username=username) | Q(email=username))
            if user.check_password(password):
                return user
        except Exception as e:
            return e


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 is not None:
            login(request, user)
            return render(request, "index.html", {'nickname': user})
        else:
            return render(request, "login.html", {'msg': u"用户名或密码错误!"})
    elif request.method == 'GET':
        return render(request, 'login.html', {})

Second, modify the djangoTest project urls.py is modified as follows

#_*_encoding:utf-8_*_

# xadmin的依赖
import xadmin
from xadmin.plugins import xversion
from django.conf.urls import url
from django.views.generic import TemplateView
from users.views import user_login
# 导入LoginView 类
from users.views import LoginView

xadmin.autodiscover()

# version模块自动注册需要版本控制的 Model

xversion.register_models()


urlpatterns = [
    url(r'^adminx/', xadmin.site.urls),

    url(r'^$', TemplateView.as_view(template_name="index.html"), name='index'),
    # 修改调用LoginView.as_view()
    url(r'^login/$', LoginView.as_view(), name="login"),


]

 

Published 42 original articles · praised 11 · 20,000+ views

Guess you like

Origin blog.csdn.net/QWERTY55555/article/details/105595678