[py][mx]django使用class写views-免去判断方法的烦恼

Posted 毛台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[py][mx]django使用class写views-免去判断方法的烦恼相关的知识,希望对你有一定的参考价值。

修改views使用class模式

类模式写views - 免去了函数模式的判断的烦恼

users/views.py

from django.views.generic import View

class UserView(View):#继承了View类,它里面实现get post等方法, 使用类模式写免去了函数模式的判断
    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)  # django执行用户登录
            return render(request, "index.html")
        else:
            return render(request, "login.html", {\'msg\': "用户名或密码错误"})

函数模式写views - 需要手动判断方法,有点麻烦

users/views_old.py

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)  # django执行用户登录
            return render(request, "index.html")
        else:
            return render(request, "login.html", {\'msg\': "用户名或密码错误"})

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

修改urls.py 调用views里对应的类

from django.views.generic import TemplateView
from users import views

urlpatterns = [
    path(\'\', TemplateView.as_view(template_name=\'index.html\'), name="index"),
    path(\'login/\', views.UserView.as_view(), name="login"),
    path(\'xadmin/\', xadmin.site.urls),
]

以上是关于[py][mx]django使用class写views-免去判断方法的烦恼的主要内容,如果未能解决你的问题,请参考以下文章

[py][mx]django自定义认证类

[py][mx]django处理登录逻辑

[py][mx]django的cookie和session操作

[py][mx]django通过邮箱找回密码

[py][mx]django分页第三方模块django-pure-pagination

[py][mx]django get方法返回login页面