Django 在线教育平台开发(五)用Form实现用户登入
2018-12-03 08:44
405 查看
基于类的视图
[code]#users.views from django.views.generic.base import 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", ) else: return render(request, "login.html", {"msg": "用户名或密码错误!"})
基于表单的视图
在APP中创建forms.py文件
[code]from django import forms class LoginForm(forms.Form): username = forms.CharField(required=True) password = forms.CharField(required=True, min_length=5)
在views.py中修改LoginView类
[code]from .forms import LoginForm class 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})
Cookie:每次为了访问网站方便,在本地存取了一些常用信息。当再次访问服务器时,自动添加相应的信息(如自动登录)。缺点:不安全。
Session:为了解决Cookie的安全隐患,服务器只把ID(通行证)发送给用户,用户的相关信息还是存储在服务器中。但用户每次只要发送ID就可以验证相关的信息。这样做提高了安全性。
用户注册
流程与用户登录大体相同,以下仅描述部分细节。
[code]#urls.views from django.contrib.auth.hashers import make_password user_profile = UserProfile() user_profile.username = user_name user_profile.email = user_name user_profile.is_active = False user_profile.password = make_password(pass_word) user_profile.save()
当存入密码时,不能明文存储,需要进行加密。
设置邮箱验证码
1.配置发送邮箱
[code]#setting EMAIL_HOST = "smtp.sina.cn" EMAIL_PORT = 25 EMAIL_HOST_USER = "15167771098@sina.cn" EMAIL_HOST_PASSWORD = "xuezhihao123" EMAIL_USE_TLS= False EMAIL_FROM = "15167771098@sina.cn"
注意:需要对使用的邮箱开启POP3/SMTP服务
2.编写发送邮件函数
[code]from random import Random from django.core.mail import send_mail from users.models import EmailVerifyRecord from MxOnline.settings import EMAIL_FROM #生成随机验证码 def random_str(randomlength=8): ... #发送邮件函数 def send_register_email(email, send_type="register"): email_record = EmailVerifyRecord() code = random_str(16) email_record.code = code email_record.email = email email_record.send_type = send_type email_record.save() email_title = "" email_body = "" if send_type == "register": email_title = "慕学在线网注册激活链接" email_body = "请点击下面的链接激活你的账号: hhttp://127.0.0.1:8000/active/{0}".format(code) send_status = send_mail(email_title, email_body, EMAIL_FROM, [email]) if send_status: pass
3.在views.py中执行发送函数
[code]from utils.email_send import send_register_email class RegisterView(View): def post(self, request): ... send_register_email(user_name, "register")
阅读更多
相关文章推荐
- Django 在线教育平台开发(七)ModelForm
- Django 在线教育平台开发(八)课程功能实现的零星知识点
- Django 在线教育平台开发(四)用户登录
- Django 在线教育平台开发(十)xadmin进阶开发
- Django 在线教育平台开发(二)设计models
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
- 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html
- Django 在线教育平台开发(六)模板继承与页面相关功能
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 第三百八十三节,Django+Xadmin打造上线标准的在线教育平台—第三方模块django-simple-captcha验证码
- 基于IMOOC强力django+杀手级xadmin 打造上线标准的在线教育平台课程的学习(1)
- 基于IMOOC强力django+杀手级xadmin 打造上线标准的在线教育平台课程的学习(13)——xadmin介绍
- 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示
- 深度学习在线教育平台实践---推荐算法TensorFlow实现
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 基于IMOOC强力django+杀手级xadmin 打造上线标准的在线教育平台课程的学习(7)——自定义UserProfile
- Django建教育平台(八)--用户注册