美文网首页
session的使用

session的使用

作者: 流蓝浅 | 来源:发表于2018-04-14 20:42 被阅读0次

状态保持

 http 协议是无状态的:每次请求都是一次新的请求 ,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话

 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据

 存储方式包括 cookie、session ,会话一般指 session 对象

 使用 cookie ,所有数据存储在客户端,注意不要存储敏感信息

 推荐使用 sesison 方式,所有数据存储在服务器端,在客户端 cookie 中存储 session_id

 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据

 注意:不同的请求者之间不会共享这个数据,与请求者一一对应

view.py的设置
from django.shortcuts import render
from piankeapp.models import User
# Create your views here.
from django.shortcuts import render,redirect
from django.urls import reverse
# from pianke.models import User
from django.http import  HttpResponse


# 负责主页跳转
def index(request):
    # return HttpResponse("index")
    username = request.session.get("username") # 从session中取数据并且返回给前台
    return render(request, "pianke/index.html", {"username": username})


# 负责登陆页面跳转
def login(request):
    return render(request, "pianke/login.html")


# 负责注册页面跳转
def register(request):
    return render(request, "pianke/register.html")


# 实现注册表单的处理
def register_handle(request):
    username = request.POST["username"]
    password = request.POST["password"]
    phone = request.POST["phone"]
    gender = request.POST["gender"]
    user = User()
    user.username = username
    user.password = password
    user.phone = phone
    user.gender = gender
    user.save()
    request.session["username"] = username
    # context = {"username": username}
    # return redirect("/pianke/")   # render不会把session中的数据传回前台的但是redirect会
    # return redirect(reverse("pianke:")) # 因为render不会改变路径所以不能够触发index函数进行session里面数据的获取
    return render(request,"pianke/index.html")# 而redirect可以进行url的更新所以可以取到数据


# 实现登陆表单数据的处理
def login_handle(request):
    username = request.POST["username"]
    password = request.POST["password"]
    try:
        u = User.objects.get(username = username) # 第一个username时model中 的 第二个时上面获取到的 这句话是查询username=上面username的对象
        if u.password == password: # 匹配上面的password是否与这个对象的password相等
            request.session["username"]=username # 如果相等的话就存到数据库里

    except Exception as e: # 因为可能username 不在数据库里查询不到所以可能会抛出异常
        print(e)
    finally:
           # return render(request, "pianke/index.html")
           return redirect("/pianke/")

表单提交
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>

        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        {% load static %}
        <script type="text/javascript" src="{% static 'pianke/bootstrap-3.3.7-dist/js/bootstrap.js' %}" ></script>
        <link rel="stylesheet" href="{% static 'pianke/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css' %}" />
        <link rel="stylesheet" href="{% static 'pianke/bootstrap-3.3.7-dist/css/bootstrap.min.css' %}" />
        <link type="text/css" href="{% static 'pianke/bootstrap-3.3.7-dist/css/bootstrap.css' %}"/>
        <style type="text/css">
            *{
                padding: 0px;
                margin: 0px;
            }
            .col-sm-10.aa{
                width: 300px;
            }
            .form-horizontal.bb{
                margin: auto;
                width: 500px;
                height: 650px;
                /*background-color: darkcyan;*/
                /*background-image: url(img/login-bg.png);*/
                /*background-repeat:no-repeat ;*/
            }
            .login{
                width: 500px;
                height: 650px;
                /*background-color: darkcyan;*/
                margin: auto;
                /*.zjhn-nav li.active a{ background-image:url(../image/Click_03_temp.png); */
                background-repeat:no-repeat; 
                background-size:100% 100%;
                background-image: url({% static 'pianke/img/login-bg.png' %});
            }
            .login_content{
                padding-top: 250px;
                padding-left: 80px;
            }
            .form-group.world{
                margin-top: 100px;
                margin-left: 100px;
                color: gray;
            }
        </style>
    </head>
    <body>

        <div class="login">
            <div class="login_content">
                
                <form class="form-horizontal bb" method="post" action="{% url 'pianke:login_handle'%}">
                    <br />{% csrf_token %}<br />
              <div class="form-group">
                <label for="inputEmail3" class="col-sm-2 control-label">Username</label>
                <div class="col-sm-10 aa">
                  <input type="text" class="form-control" name="username" id="inputEmail3" placeholder="Username">
                </div>
              </div>
              <div class="form-group">
                <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
                <div class="col-sm-10 aa">
                  <input type="password" class="form-control" name="password" id="inputPassword3" placeholder="Password">
                </div>
              </div>       
                             
              <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                  <div class="checkbox">
                    <label>
                      <input type="checkbox"> Remember me
                    </label>
                  </div>
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                  <button type="submit" class="btn btn-default">Sign in</button>
                </div>
                
                 <div class="form-group world">
                     世界很美, 而你正好有空 
                 </div>
                
                    
              </div>
            </form>
            </div>
        </div>
        <!--<img src="img/login-bg.png"/>   -->
    </body>
</html>

相关文章

  • laravel中session的使用

    可以使用request的session方法调用session 通过session类获取session: 使用use...

  • PHP session

    使用session 在PHP中使用session非常简单,先执行session_start方法开启session,...

  • J2EE--Session

    为什么要使用Session? 怎样使用Session? Session和Cookie的区别? 1.为什么要使用Se...

  • cookie,session使用

    session使用: //启动session的初始化 session_start(); //注册session变量...

  • PHP的session机制

    PHP机制使用session 开启session --- session_start()...

  • 【linux备忘录】tmux简单使用指南

    打开tmux终端直接使用tmux即可改session名字使用C-b $ 显示所有session 进入session...

  • fetch session失效原因

    使用koa做后台框架时,使用了koa-session做session处理,发现老是拿不到session,后来发现原...

  • Session机制

    Session机制 除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session...

  • 登录模块

    登录使用cookie 和session 通常使用session 保存用户登录状态比较好

  • laravel之session

    session(config/session.php) 2.1 laravel使用session有三种方法: ...

网友评论

      本文标题:session的使用

      本文链接:https://www.haomeiwen.com/subject/whplkftx.html