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() 这个方法来实现 ]