django150,django笔记
学习笔记,仅供参考。
文章目录Web请求验证用户验证验证用户登录用户注销举个例子
Web请求身份验证
django . contrib . authimportauthenticate、登录、注销的相关函数
认证用户认证
函数用法authenticate(username= username ,password= original password )这个函数可以验证用户名和密码是否合法,合法则返回用户模型类的对象,不合法则不返回。
来自django.contrib.authimport的示例官方身份验证
用户=认证(用户名=约翰,密码=秘密)
如果用户不是无:
#已认证
否则:
#身份验证失败在这个函数中,它不仅检查我们输入的用户名和密码是否与存储的相匹配,还检查id_active是否为True。
用户登录
使用函数login(请求,用户)
#user为用户模型类创建的用户对象。
#请求是HttpRequest对象。这个方法使用Django的会话框架来保存用户在会话中的信息。
来自django.contrib.authimport验证、登录的示例
def login_view(请求):
用户名=请求。帖子[用户名]
密码=请求。发布[密码]
用户=验证(请求,用户名=用户名,密码=密码)
如果用户不是无:
登录(请求,用户)
#用户信息保存在会话中
#重新设计登录成功页面。
否则:
#返回无效的登录信息
用户注销注销
函数注销(请求)通过django.contrib.auth.login()登录的用户可以使用django.contrib.auth.logout()注销
django.contrib.authimport注销示例
def logout_view(请求):
注销(请求)
例如
举个例子1。
现在,我们使用admin管理员帐户来演示用户验证、用户登录和用户注销。
在myuser应用程序下的views.py模块中,我们为用户认证、用户登录和用户注销创建了两个视图处理函数:
从django.shortcuts导入渲染
从django.http导入HttpResponse
从django.contrib.auth导入模型
从django.contrib.auth导入验证、登录、注销
#在此创建您的观点。
定义我的登录(请求):
if request.method==GET :
返回render(request, myuser/login.html ,locals())
elif request.method==POST :
用户名=请求。POST.get(用户名,)
密码=请求。POST.get(password ,)
尝试:
用户=认证(用户名=用户名,
密码=密码)
如果用户不是无:
登录(请求,用户)
# print(请求.会话)
返回HttpResponse(登录成功.)
否则:
返回HttpResponse(登录失败.)
除了:
返回HttpResponse(没有这样的用户.)
定义我的注销(请求):
# print(我的登录正在运行.)
注销(请求)
返回HttpResponse(注销.)
在myuser应用程序下的urls.py模块中,我们创建了两条路由:
从django.urls导入re_path
从。导入视图
urlpatterns=[
re_path(r^login/$,views.mylogin),
re_path(r^logout/$,views.mylogout),
]
现在,我们向admin数据库后台管理系统http://127.0.0.1:8000/admin/:
出现登录页面,也就是说,目前我们还没有登录管理员账号。
现在,我们向http://127 . 0 . 0 . 1:8000/my user/log in/发出请求并登录:
成功登录后,让我们刷新后台管理系统的admin数据库:
我们发现我们已经登录了!这是因为在我们使用登录功能登录后,我们的帐户信息会保存在会话中。此时,我们处于登录状态。
现在,我们发起对http://127 . 0 . 0 . 1:8000/my user/logout/的访问,并刷新admin数据库后台管理系统:
我们发现我们的管理员帐户已被注销。
举个例子2。
现在,我们基于上一个示例的代码编写一个注册接口。
首先,我们在myuser应用程序的urls.py文件中添加1条路由:
从django.urls导入re_path
从。导入视图
urlpatterns=[
re_path(r^login/$,views.mylogin),
re_path(r^logout/$,views.mylogout),
re_path(r^reg/$,views.myreg),
]在myuser应用程序的views.py模块中,添加一个视图函数:
def myreg(请求):
if request.method==GET :
return render(请求, myuser/register.html )
elif request.method==POST :
用户名=请求。POST.get(用户名,)
密码=请求。POST.get(password ,)
#这里就不做用户认证了。
尝试:
用户=模型。用户.对象.创建用户(
用户名=用户名,
密码=密码
)
user.save()
返回HttpResponse(注册成功.)
除了:
返回HttpResponse(注册失败.)现在,我们向http://127 . 0 . 0 . 1:8000/my user/reg/提出请求,并填写注册信息:
点击注册:
检查mybookstore数据库中的auth_user数据表:
mysql select id,用户名,邮箱,来自auth_user的is _ superuser
- - - -
id 用户名电子邮件 is _超级用户
- - - -
1 山羊主教 goatbishop@gmail.com 1
2 黑山羊 0
- - - -
一组2行(0.01秒)。大家可以看到,我们的数据表中多了一个普通用户的账户记录。需要注意的是,普通用户无法登录admin数据库后台管理界面。
转载请联系作者获得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。