zoukankan      html  css  js  c++  java
  • 关于Django的session的使用 (装饰器版)

    http协议是无状态,无状态的意思是每次请求都是独立的,它的这次请求和下次请求是没有关系的。

    这样我们在web要判断是否登录就要传递一种信息给我们的服务器,让服务器根据你给的信息,返回你的东西

    这里我是直接写如何在Django中使用的。

    from django.shortcuts import render, redirect, HttpResponse
    from users import models
    from functools import wraps
    
    
    # Create your views here.
    
    
    # 登录权限控制(session版)
    def check_login(func):
        @wraps(func)
        def inner(request, *args, **kwargs):
    
            if request.session.get("user"):
                return func(request, *args, **kwargs)
            else:
                next_url = request.path_info
                print(next_url)
                return redirect("/app01/login/?next_url={}".format(next_url))
    
        return inner
    
    # 在login中设置session
    def login(request):
        error_msg = None
        # 如果请求是POST就进去
        if request.method == 'POST':
            email = request.POST.get('email', None)
            pwd = request.POST.get('pwd', None)
            next_url = request.GET.get("next_url", None)
            if email == 'liuhong@qq.com' and pwd == '123':
                # 设置一个session
                request.session['user'] = email
                if next_url:
                    req = redirect(next_url)  # 得到一个对象
                else:
                    return HttpResponse('没有next_url的返回值')
                return req
            else:
                error_msg = '用户名或密码错误!!'
        return render(request, 'session/login.html', {'error': error_msg})
    
    
    @check_login
    def user_list(request):
        ret = models.Users.objects.all()
        return render(request, 'session/user_list.html', {'user_list': ret})
    
    
    # 注销函数
    def logout(request):
        # 只删除session数据
        # request.session.delete()
        # 如何删除session数据和cookie
        request.session.flush()
        return redirect("/app01/login/")
    

    这里要注意的是,在你的前端代码中的form表单的提交中的action的设置,要么为空要么就设置为下面哪种

    <form class="form-horizontal" action="{{ request.get_full_path }}" method="post">
    从csdn搬家过来的可能没有图片,原地址https://blog.csdn.net/weixin_38091140
  • 相关阅读:
    Python之模块
    Python之request模块-基础用法
    Linux小知识点
    python之pip安装软件包常用命令
    windows设置多个JDK环境
    window配合虚拟机VMware搭建虚拟ubuntu服务器入坑集锦
    Linux服务器相关信息查询
    达梦数据库
    创业公司如何快速构建高效的监控系统?
    干货分享:智慧工厂时代下大数据 + 智能的深度实践
  • 原文地址:https://www.cnblogs.com/Apy-0816/p/11100274.html
Copyright © 2011-2022 走看看