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/'

最新文章

  1. html小结
  2. 初学Python
  3. 如何:在 ASP.NET 网页中检测浏览器类型
  4. linux命令:chmod
  5. WPF打印、预览、导出PDF
  6. 部署openssh服务器
  7. Markdown 學習
  8. 前端学PHP之文件操作(认真读读)
  9. iOS开发多线程篇—自定义NSOperation
  10. (学习网址)Python 自动化测试
  11. TestPointer
  12. elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具
  13. NopCommerce架构分析之六------自定义RazorViewEngine
  14. Learning WCF Chapter1 Creating a New Service from Scratch
  15. hadoop文本转换为序列文件
  16. linux 内核源代码分析 - 获取数组的大小
  17. Java关键字之this
  18. Android性能优化-内存泄漏的8个Case
  19. redis缓存数据库
  20. 如何自学Java开发

热门文章

  1. 剑指offer-Q60 n个骰子的点数
  2. TensorFlow写的神经网络不work的原因
  3. webpack3升级webpack4
  4. 微信小程序 — 速学速查笔记
  5. delete trancate drop三者之间的区别
  6. DPM(物体检测)
  7. Android 带你读懂事件分发
  8. 从git上pull下的代码,执行时提示:ModuleNotFoundError: No module named '......',解决方法如下:
  9. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
  10. 【CUDA开发】CUDA从入门到精通