【转载】Django自带的注册登陆功能
2024-10-21 13:11:59
1.登陆
知识点:
a.auth.authenticate(username=name值, password=password值)
验证用户名和密码
b.auth.login(request, user)
登陆操作
from django.contrib import auth
def djlogin(request):
if request.method == 'GET':
return render(request, 'day6_login.html')
if request.method == 'POST':
name = request.POST.get('name')
password = request.POST.get('password')
# 验证用户名和密码,验证通过的话,返回user对象
user = auth.authenticate(username=name, password=password)
if user:
# 验证成功 登陆
auth.login(request, user)
return HttpResponseRedirect('/stuapp/index/')
else:
return render(request, 'day6_regist.html')
当用户登陆成功时,会生成一个sessionid保存在cookies中,可以在数据库django_session中查看,当用户访问其他页面时,可以通过sessionid判断用户是否已经登陆。
2.注册
知识点:
a.User模型
django自带User模型,导入方法:from django.contrib.auth.models import User
b.create_user创建用户
create_user是django封装好的用于创建用户的方法,创建方法:User.objects.create_user(username=name, password=password)
,此处的User是django中自带的User模型
from django.contrib.auth.models import User
def djregist(request):
if request.method == 'GET':
return render(request, 'day6_regist.html')
if request.method == 'POST':
name = request.POST.get('name')
password = request.POST.get('password')
# 此处的User 是 django 自带的model
User.objects.create_user(username=name, password=password)
return HttpResponseRedirect('/uauth/dj_login/')
数据库中用于存储用户信息的表 auth_user
3.退出登陆
知识点:
a.auth.logout(request)
退出登陆的操作
def djlogout(request):
if request.method == 'GET':
auth.logout(request)
return HttpResponseRedirect('/uauth/dj_login/')
4.登陆验证
知识点:
a.login_required()
若在访问某页面时,需要确认用户登陆成功才能访问,可以在url中用login_required方法进行验证,如果登陆成功就执行,如果用户未登陆,自动跳转登陆页面。
b.LOGIN_URL
配置跳转路径,,当用户未登陆访问其他页面时,自动跳转到指定的url
url(r'^index/', login_required(views.index)),
url(r'^addstu/', login_required(views.addStu), name='astu'),
url(r'^stupage/', login_required(views.stuPage)),
值得注意的是,一旦加上login_required方法,在用户未登陆时访问页面会出现如下的404错误,所需还需要在setting.py进行配置LOGIN_URL。
配置跳转路径,当用户未登陆访问其他页面时,自动跳转到登陆页面
LOGIN_URL = '/uauth/dj_login/'
最新文章
- html小结
- 初学Python
- 如何:在 ASP.NET 网页中检测浏览器类型
- linux命令:chmod
- WPF打印、预览、导出PDF
- 部署openssh服务器
- Markdown 學習
- 前端学PHP之文件操作(认真读读)
- iOS开发多线程篇—自定义NSOperation
- (学习网址)Python 自动化测试
- TestPointer
- elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具
- NopCommerce架构分析之六------自定义RazorViewEngine
- Learning WCF Chapter1 Creating a New Service from Scratch
- hadoop文本转换为序列文件
- linux 内核源代码分析 - 获取数组的大小
- Java关键字之this
- Android性能优化-内存泄漏的8个Case
- redis缓存数据库
- 如何自学Java开发
热门文章
- 剑指offer-Q60 n个骰子的点数
- TensorFlow写的神经网络不work的原因
- webpack3升级webpack4
- 微信小程序 — 速学速查笔记
- delete trancate drop三者之间的区别
- DPM(物体检测)
- Android 带你读懂事件分发
- 从git上pull下的代码,执行时提示:ModuleNotFoundError: No module named '......',解决方法如下:
- java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
- 【CUDA开发】CUDA从入门到精通