• python16_day17【Django_session、ajax】


    一、Session

      1.settings.py 

    SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默认)
        
        SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
        SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路径(默认)
        SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默认)
        SESSION_COOKIE_SECURE = False                            # 是否Https传输cookie(默认)
        SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http传输(默认)
        SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默认)
        SESSION_EXPIRE_AT_BROWSER_CLOSE = True                  # 是否关闭浏览器使得Session过期(默认)
        SESSION_SAVE_EVERY_REQUEST = True                       # 是否每次请求都保存Session,默认修改之后才保存(默认)
     
    

      2.views.py

     1 def home(request):
     2     # v = request.COOKIES.get('uuu')
     3     v = request.session.get('user')
     4     if v:
     5         return HttpResponse("登录成功: [%s]" % v)
     6     else:
     7         return redirect('/login/')
     8 
     9 
    10 def login(request):
    11     if request.method == 'GET':
    12         return render(request, 'login.html', {'msg': ''})
    13     else:
    14         u = request.POST.get('user')
    15         p = request.POST.get('pwd')
    16         ct = UserInfo.objects.filter(username=u, password=p).count()
    17         if ct:
    18             obj = redirect('/home/')
    19             # 方法一写cookie
    20             # obj.set_cookie('uuu', u, 30)
    21             # 方法二写session
    22             # 生成随机字符串
    23             # 发送给客户端
    24             # 保存服务器
    25             request.session['user'] = u
    26             request.session['pass'] = p
    27             return obj
    28         else:
    29             return render(request, 'login.html', {'msg': "用户名或者密码错误!"})

      3.session其它方法

     def index(request):
            # 获取、设置、删除Session中数据
            request.session['k1']
            request.session.get('k1',None)
            request.session['k1'] = 123
            request.session.setdefault('k1',123) # 存在则不设置
            del request.session['k1']
     
            # 所有 键、值、键值对
            request.session.keys()
            request.session.values()
            request.session.items()
            request.session.iterkeys()
            request.session.itervalues()
            request.session.iteritems()
    
    # 用户session的随机字符串
            request.session.session_key
     
            # 将所有Session失效日期小于当前日期的数据删除
            request.session.clear_expired()
     
            # 检查 用户session的随机字符串 在数据库中是否
            request.session.exists("session_key")
     
            # 删除当前用户的所有Session数据
            request.session.delete("session_key")
     
            request.session.set_expiry(value)
                * 如果value是个整数,session会在些秒数后失效。
                * 如果value是个datatime或timedelta,session就会在这个时间后失效。
                * 如果value是0,用户关闭浏览器session就会失效。
                * 如果value是None,session会依赖全局session失效策略。

     二、ajax

      1.页面login.html

     1 <body>
     2     <div id="block">
     3         <label id="user" for="name">p</label>
     4             <input type="text" name="username" id="name" placeholder="Username" required/>
     5         <label id="pass" for="password">k</label>
     6             <input type="password" name="password" id="password" placeholder="Password" required />
     7             <input type="button" id="submit" name="submit" value="login"/>
     8     </div>
     9 
    10     <script src="/static/jquery-1.12.4.js"></script>
    11  <script>
    12         $(function(){
    13                 bind_button();
    14         })
    15 
    16         function bind_button(){
    17             $("#submit").click(function(){
    18                 var u = $("#name").val();
    19                 var p = $("#password").val();
    20                 $.ajax({
    21                     url: "{% url 'LOGIN' %}",
    22                     type: "POST",
    23                     data: {user:u, passwd:p},
    24                     dataType: "JSON",
    25                     success: function(data){
    26                         if(data.status){
    27                             location.href = "/host/"
    28                         }else{
    29                             alert(data.error)
    30                         }
    31                     }
    32                 })
    33             })
    34         }
    35     </script>
    36 </body>

      2.views.py

    import json
    
    def login(request):
        if request.method == 'POST':
            user = request.POST.get('user')
            passwd = request.POST.get('passwd')
            obj = Users.objects.filter(username=user, password=passwd).first()
            res = {'status': True, 'error': None}
            if obj:
                request.session['user'] = user
                request.session['passwd'] = passwd
                return HttpResponse(json.dumps(res))
            else:
                res['status'] = False
                res['error'] = "用户名或者密码错误"
                return HttpResponse(json.dumps(res))
    
        elif request.method == 'GET':
            return render(request, 'login1.html', locals())

      3.AJAX序列化二种方式

      关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。

      A.serializers

    from django.core import serializers
    ret = models.BookType.objects.all()
    data = serializers.serialize("json", ret)
    

      B.json

    import json
    
    res = {'status': True, 'error': None}
    return HttpResponse(json.dumps(res))
    

      

  • 相关阅读:
    c#简单操作MongoDB_2.4
    将不确定变为确定~老赵写的CodeTimer是代码性能测试的利器
    利用双缓冲队列来减少锁的竞争
    移动端地区选择控件mobile-select-area
    服务器CPU居高不下--解决问题历程
    .NET常用开发工具整理
    免费的精品: Productivity Power Tools 动画演示
    二维码编码与解码类库ThoughtWorks.QRCode
    C#异步编程基础入门总结
    优盘版Kali
  • 原文地址:https://www.cnblogs.com/weibiao/p/6886352.html
Copyright © 2020-2023  润新知