利用Django和装饰器做一个简单的修改密码页面

view视图代码:

from django.shortcuts import render,redirect
from django.http import HttpResponse

# Create your views here.
def login_required(view_func):
    def wrapper(request,*view_args,**view_kwargs):
        if request.session.has_key('islogin'):
            return view_func()
        else:
            return redirect('/login')
    return wrapper

def child(request):

    return render(request,'booktest/child.html')



def html_escape(requet):
    return render(requet,'booktest/html_escape.html',{
        'content':'<h1>h1标签<h1>'
    })



def login(request):
    '''显示登录页面'''
    # 判断用户是否登录
    if request.session.has_key('islogin'):
        # 用户已登录, 跳转到首页
        return redirect('/change_pwd')
    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):
    '''登录校验视图'''
    # request.POST 保存的是post方式提交的参数 QueryDict
    # request.GET 保存是get方式提交的参数
    print(request.method)
    # 1.获取提交的用户名和密码
    username = request.POST.get('username')
    password = request.POST.get('password')
    remember = request.POST.get('remember')
    # 2.进行登录的校验
    # 实际开发:根据用户名和密码查找数据库
    # 模拟: smart 123
    if username == 'smart' and password == '123':
        # 用户名密码正确,跳转到首页
        response = redirect('/change_pwd')

        # 判断是否需要记住用户名
        if remember == 'on':
            # 设置cookie username,过期时间1周
            response.set_cookie('username', username, max_age=7*24*3600)

        # 记住用户登录状态
        # 只有session中有islogin,就认为用户已登录
        request.session['islogin'] = True
        request.session['username'] = username
        # 返回应答
        return response
    else:
        # 用户名或密码错误,跳转到登录页面
        return redirect('/login')



@login_required
def change_pwd(request):
    return render(request,'booktest/change_pwd.html')



@login_required
def change_pwd_action(request):
    password = request.POST.get('password')
    username = request.session.get('username')
    return HttpResponse('你的用户名为:%s密码为%s'%(username,password))

  

猜你喜欢

转载自www.cnblogs.com/xcx-bwt/p/10589332.html