登录后台逻辑二
来源:互联网 发布:java 技术架构 编辑:程序博客网 时间:2024/05/22 06:41
将上文中用函数实现逻辑改为用类实现。
增加form验证功能
用类实现
views.py完整代码:
# -*- coding: utf-8 -*-from django.shortcuts import renderfrom django.contrib.auth import authenticate, loginfrom django.contrib.auth.backends import ModelBackendfrom django.db.models import Qfrom django.views.generic.base import Viewfrom .models import UserProfileclass CustomBackend(ModelBackend): def authenticate(self, 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 Noneclass 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") else: return render(request, "login.html", {"msg": "用户名或密码错误!"})
同时将urls.py更正:
from users.views import LoginViewurlpatterns = [ url('^$',TemplateView.as_view(template_name="index.html"), name="index"),url('^login/$', LoginView.as_view(), name="login"),]
form 验证功能
在users中新建forms.py,添加以下代码:
from django import formsclass LoginForm(forms.Form): username = forms.CharField(required=True) password = forms.CharField(required=True, min_length=5)
在views.py中引入form验证功能
from .forms import LoginFormclass LoginView(View): def get(self, request): return render(request, "login.html", {}) def post(self, request): login_form = LoginForm(request.POST) if login_form.is_valid(): 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") else: return render(request, "login.html", {"msg": "用户名或密码错误!"}) else: return render(request, "login.html", {"login_form":login_form})
在login.html中增加:
div class="form-group marb20 {% if login_form.errors.username %} errorput {% endif %}"> <label>用 户 名</label> <input name="username" id="account_l" type="text" placeholder="手机号/邮箱" /> </div> <div class="form-group marb8 {% if login_form.errors.password %}errorput{% endif %}"> <label>密 码</label> <input name="password" id="password_l" type="password" placeholder="请输入您的密码" /> </div>
<div class="error btns login-form-tips" id="jsLoginTips">{% for key,error in login_form.errors.items %}{{ error }} {% endfor %}{{ msg }}</div>
阅读全文
0 0
- 登录后台逻辑二
- 登录后台逻辑一
- 登录后台逻辑三之session和cookie
- SpringSecurity实现后台管理员登录(二)
- 登录逻辑
- Django框架之views(业务逻辑)简单后台登录与退出的业务逻辑详细描述
- 基于ThinkPHP3.2.3后台登录界面学习记录(二)
- 注册后台逻辑一
- 06登录界面逻辑
- 控制台下登录逻辑
- 应用软件登录逻辑总结
- 自动登录逻辑
- kotlin实现登录逻辑
- 登录业务逻辑思路
- 登录代码逻辑
- struts2前台后台逻辑串联
- domino后台登录
- Magento后台不能登录
- 实习日志
- 如何制作一个动态的时间每隔一秒进行跳转
- 阿里巴巴2017实习生笔试题(二)错题
- Kmeans聚类算法 python sklearn 用户画像
- JavaScript简介
- 登录后台逻辑二
- Gradle记录
- React Native开发环境的配置
- 进程通信1——管道通信
- OJ测试数据的输入格式列举
- NeoVim/SpaceVim初体验
- 双系统下ubuntu系统扩容
- PCL:从深度图(pcd文件)中提取NARF关键点
- PHP大法