会话保持及Form表单--cookie、session

 

会话保持--cookie、session

 实例1:使用cookie让浏览器记录用户登录次数

view.py代码如下:

def index(request):
    #会话保持cookie
    #获取浏览器的cookie
    num = request.COOKIES.get('num')
    if num:
        num = str(int(num)+1)
    else:
        num = 1
    response=render(request,'teacher/index.html',context={
        'num':num
    })
    #设置cookie
    response.set_cookie('num',num,max_age=20) #max_age保存多少秒,整数,expiry设置过期时间
    return response

index.html代码如下:

    <h1 style="color: red">我是第<span style="color: yellowgreen"> {{ num }}</span>次访问</h1>

结果展示如下:

2.session会话保持

在项目的setting.py中注册

INSTALLED_APPS = [
    'django.contrib.sessions',   #这两个都是session需要用到的
]

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
]

添加上以后还需要进行数据迁移,如果默认存在上面,以前做数据迁移的时候已经做了,不需要重复做,django 默认启动session.

django数据保存在django_session表中

session方法:

实例二:session技术依赖于cookie技术。使用session实现客户端的登录与登出

view.py代码如下:

def index(request):
#会话保持session
    name = request.session.get('name')
    return  render(request,'teacher/index.html',context={'name':name})

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username','')
        password = request.POST.get('password','')
        if username == 'xinlian' and password == '111':
            request.session['name']=username
            request.session.set_expiry(10)  #设置过期时间
            return  redirect(reverse('teacher:index'))
    return  render(request,'teacher/login.html')
def logout(request):
request.session.flush()
return redirect(reverse('teacher:index'))

index.html代码如下:

用户名:{{ name|default:"未登录" }} <a href="{% url 'teacher:logout' %}">安全退出</a>

login.html代码如下:

    <h1>登录</h1>
    <form action="" method="post">
        {% csrf_token %}
        <p>用户名:<input type="text" name="username"></p>
        <p>密码:<input type="password" name="password"></p>
        <p><input type="submit" value="登录"></p>
    </form>

urls.py中添加:

path('index/', views.index,name='index'),
path('login/', views.login),
path('logout/',views.logout,name='logout'),

实现结果如下:

 

posted on 2019-03-16 10:34  透过代码看世界  阅读(1126)  评论(0编辑  收藏  举报

导航