模板-登录装饰器

需求: 只有在用户登录之后才可以进行修改密码操作

1)登录/login.html 模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
POST:提交的参数请求头。数据安全性要求比较高的时候使用post.
GET:提交的参数在url中。
<form method="post" action="/login_check">
    用户名:<input type="text" name="username" value="{{ username }}"><br/>
    密码:<input type="password" name="password"><br/>
    <input type="checkbox" name="remember">记住用户名<br/>
    <input type="submit" value="登录">
</form>
</body>
</html>
</body>
</html>

2)登录成功之后修改密码的模板文件 /change_pwd.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改密码</title>
</head>
<body>
<form method="post" action="/change_pwd_action">
    新密码:<input type="password" name="pwd">
<input type="submit" value="确认修改">
</form>

</body>
</html>

3)对应视图

def  login_required(func):
    '''登录判断装饰器'''
    def wrapper(request,*args,**kwargs):
        #判断用户是否登录
        if not request.session.has_key('islogin'):
            return redirect('/login')
    return wrapper
    
  def login(request):
    #判断用户是否登录
    if request.session.has_key('islogin'):
        #用户已登录, 跳转到首页
        return redirect('/index')
    else:
        #用户未登录
        #获取cookie username
        if  'username' in request.COOKIES:
            #后去记住的用户名
            username = request.COOKIES['username']
        else:
            username = ''
        return render(request,'booktest/login.html',{'username':username})

def login_check(request):
    '''登录校验'''
    #获取用户名和密码
    username = request.POST.get('username')
    password = request.POST.get('password')
    remember = request.POST.get('remember')

    if username == '123' and password == "123":
        response = redirect('/change_pwd')
        if remember == "on":
            response.set_cookie('username',username)
        request.session['islogin'] = True
        return response
    else:
        return redirect('/login')
        
@login_required
def change_pwd(request):
    '''显示修改密码页面'''
    # if not request.session.has_key('islogin'):
    #     return redirect('/login')
    return render(request,'booktest/change_pwd.html')
@login_required
def change_pwd_action(request):
    '''模拟修改密码处理'''
    # if not request.session.has_key('islogin'):
    #     return redirect('/login')
    password = request.POST.get('pwd')
    return HttpResponse('你修改的密码为:%s' %(password))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值