cookie与session

cookie和 session

cookie

简单方法

from django.shortcuts import render,HttpResponse,redirect
def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        if username == 'hcg' and password == '123':
            obj = render(request,'home.html')
            obj.set_cookie('name','hcg')
            return obj
        else:
            return HttpResponse('登录失败')

    return render(request,'login.html')

def index(request):
    if request.COOKIES.get('name') == 'hcg':
        return HttpResponse('this is index')
    return redirect('/login')
    
def home(request):
    return render(request,'home.html')
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{#    <form action="" method="POST" novalidate>#}
{#        {% csrf_token %}#}
{#        <p>{{ fm.user }}{{ fm.errors.user.0 }}</p>   <!-- 获取第一个错误 -->#}
{#        <p>{{ fm.pwd }}{{ fm.errors.pwd.0 }}</p>#}
{#        <p>{{ fm.email }}{{ fm.errors.email.0 }}</p>#}
{#        <input type="submit" value="提交" />#}
{#    </form>#}
<form action="" method="post">
    <p>username:
        <input type="text" name="username"></p>
    <p>password:
        <input type="text" name="password"></p>
    <p>email:
        <input type="text" name="email"></p>
    <input type="submit">
</form>
</body>
</html>

登陆装饰器

from django.shortcuts import render,HttpResponse,redirect


def login_auth(func):
    def inner(request,*args,**kwargs):
        if request.COOKIES.get('name') == 'hcg':
            res = func(request,*args,**kwargs)
            return res
        else:
            return redirect('/login')
    return inner

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        if username == 'hcg' and password == '123':
            obj = render(request,'home.html')
            obj.set_cookie('name','hcg')
            return obj
        else:
            return HttpResponse('登录失败')

    return render(request,'login.html')

@login_auth
def index(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is index')
    # return redirect('/login')
    return HttpResponse('this is index')

@login_auth
def myinfo(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is myinfo')
    # return redirect('/login')
    return HttpResponse('this is myinfo')

进阶

如果之前有访问路径,登陆后重定向到该路径

from django.shortcuts import render,HttpResponse,redirect

def login_auth(func):
    def inner(request,*args,**kwargs):
        if request.COOKIES.get('name') == 'hcg':
            res = func(request,*args,**kwargs)
            return res
        else:
            # 获取当前uri地址
            target_uri = request.get_full_path()
            print(target_uri)
            return redirect(f'/login/?next={target_uri}')
    return inner

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        if username == 'hcg' and password == '123':
            # 获取登录前uri地址
            target_uri = request.GET.get('next')
            if target_uri:
                obj = redirect(target_uri)
            else:
                obj = redirect('/home')
            obj.set_cookie('name', 'hcg')
            return obj
        else:
            return HttpResponse('登录失败')

    return render(request,'login.html')

@login_auth
def index(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is index')
    # return redirect('/login')
    return HttpResponse('this is index')

@login_auth
def myinfo(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is myinfo')
    # return redirect('/login')
    return HttpResponse('this is myinfo')


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

session

登陆后制定跳转回登陆前访问地址

from django.shortcuts import render,HttpResponse,redirect




def se_login_auth(func):
    def inner(request,*args,**kwargs):
        if request.session.get('name') == 'ysl':
            res = func(request,*args,**kwargs)
            return res
        else:
            # 获取当前uri地址
            target_uri = request.get_full_path()
            print(target_uri)
            return redirect(f'/se_login/?next={target_uri}')
    return inner

def se_login(request):

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        if username == 'ysl' and password == '123':
            # 获取登录前uri地址
            target_uri = request.GET.get('next')
            if target_uri:
                obj = redirect(target_uri)
            else:
                obj = redirect('/home')
            # obj.set_cookie('name', 'hcg')
            request.session['name'] = 'ysl'
            return obj
        else:
            return HttpResponse('登录失败')
    return render(request,'login.html')

@se_login_auth
def se_index(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is index')
    # return redirect('/login')
    print(request.session['name'])
    print(request.session.get('name'))
    return HttpResponse('this is se_index')

@se_login_auth
def se_myinfo(request):
    # if request.COOKIES.get('name') == 'hcg':
    #     return HttpResponse('this is myinfo')
    # return redirect('/login')
    return HttpResponse('this is se_myinfo')
	path('home/',views.home,name='home_view'),
    path('se_login/',views.se_login),
    path('se_index/',views.se_index),
    path('se_myinfo/',views.se_myinfo),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值