栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django 测试平台搭建学习:登录模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django 测试平台搭建学习:登录模块

前言

缺少全栈的练手项目,找了一本书《自动化平台测试开发:python测试开发实战》用来边做边练习,希望能坚持下来。

第二章从抄代码当中结合一些官方文档,加入自己的理解,目前还在编抄遍看的过程。本章主要是关于登录后的重定向到home页面,需要带入$用户名 信息,同时还要支持退出。


目录

前言

一、准备工作

二、相关资料

2.1、登录的相关文档

三、代码实现和注释

3.1 login方法

3.2 退出登录

四、小结


一、准备工作

上一章中作者写了个demo,在urls.py文件中做了path 和views的的方法匹配,而views的 login方法的处理是任意请求后返回到login.html页面。

下面根据页面来分析下要实现的需求和方法拆解:

登陆窗口

二、相关资料

2.1、登录的相关文档

django.contrib.auth | Django 文档 | Djangohttps://docs.djangoproject.com/zh-hans/4.0/ref/contrib/auth/#django.contrib.auth.models.User使用 Django 的验证系统 | Django 文档 | Djangohttps://docs.djangoproject.com/zh-hans/4.0/topics/auth/default/Django中的用户认证 | Django 文档 | Djangohttps://docs.djangoproject.com/zh-hans/4.0/topics/auth/如何使用会话 | Django 文档 | Djangohttps://docs.djangoproject.com/zh-hans/4.0/topics/http/sessions/

用户登录鉴权方法:

 

三、代码实现和注释

3.1 login方法

在apitest目录下 views.py 页面处理登录逻辑

def login(request):
    if request.POST:
        username = password = ''
        #初始化变量
        username = request.POST.get('username')
        password = request.POST.get('password')
        #从login.html页面获取name为'username'和'password'的值赋值给变量
        user = auth.authenticate(username=username,password=password)
        #使用auth.authenticate获取到user对象,如果user为none则登录失败。
        if user is not None and user.is_active:
            auth.login(request,user)
            #登录操作,login方法的参数里面user为登录成功的对象
            request.session['user'] = username
            #讲登录成功的username变量放入到session字典里面user存起来,方便template页面调用
            response = HttpResponseRedirect('/home')
            #重定向到home页面
            return response
        else:
            return render(request,'login.html',{'error':'username or password error'})
        #登录失败会吧error传递到login.html 的error变量当中
    return render(request,'login.html')
#当前页面为login页面

def home(request):
    return render(request,'home.html')

 将login重定向的home的path;需要在urls里面将/home指向到 /templates/home.html

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/',views.test) ,#关联路径到函数
    path('login/',views.login),
    path('home/',views.home),
    path('logout/',views.logout)
]

home页面源码如下,位置在templates/home.html




    
    自动化测试平台



  • 欢迎您,{{user}}
  • 退出

3.2 退出登录

仍然在views.py 里面处理logout逻辑,通过使用auth.logout自带方法,参数重不需要携带验证成功的user对象

def logout(request):
    auth.logout(request)
    return render(request,'login.html')

同样的,处理urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/',views.test) ,#关联路径到函数
    path('login/',views.login),
    path('home/',views.home),
    path('logout/',views.logout)
]

四、小结

当我们访问path路径,例如http://127.0.0.1:8000/login 时候,是先去访问工程目录下的urls,找到/login对应的views.py 的方法,再根据views.py的方法决定页面跳转逻辑。

views.py 定义的方法可以跟html直接调用,例如html页面中通过{{erro}}来传导。而html页面form表单中的username和password,通过name属性直接获取到。

下面以login实现为例,总结下页面关系:

位置作用
/工程目录/应用目录/template/login.html触发方法的接口
/工程目录/工程同名目录/urls.pypath路径和login方法的映射
/工程目录/应用目录/views.pylogin方法的定义
/工程目录/应用目录/template/home.html重定向预跳转的页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/688986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号