py21_01:django之session

session的方法

request.session['k1']                       # 获取session的值
request.session.get('k1', None)             # 获取值,没有则默认为None

request.session['k1'] = 123                 # 设置值
request.session.setdefault('k1',123)        # 设置值,存在则不设置

del request.session['k1']                   # 删除session值
request.session.clear()
    request.session.delete(request.session.session_key)

---> 键 值 键值对 <---
request.session.keys()                      # 获取其中的key值。因为session里的保存的是字典类型的数据。
request.session.values()
request.session.item()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()

request.session.session_key                 # 获取其中用户的一个随机字符串

request.session.clear_expired()             # 将所有session失效日期小于当前日期的数据删除

request.session.exists('session_key')

request.session.delete('session_key')

request.session.set_expiry(value)
    * 如果value是个整数,session会在些秒数会失效
    * 如果value是个datetime或timedelta,session就会在这个时间后失效
    * 如果value是0,用户关闭浏览器session就会失效
    * 如果value是None,session会依赖全局session失效策略

 

session之课堂小案例

from app01 import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login),
    path('index/', views.index),
    path('logout/', views.logout),
]

 

views

from django.shortcuts import render,redirect,HttpResponse
# Create your views here.
def login(request):
    if request.method == "GET":
        return render(request, 'login.html')
    elif request.method == "POST":
        user = request.POST.get('user')
        pwd = request.POST.get('pwd')
        if user == 'root' and pwd == '123':
            # 1. 生成随机字符串
            # 2. 写到用户浏览器的cookie
            # 3. 保存到session中
            # 4. 在随机字符串对应的字典中设置相关的东西
            request.session['username'] = user
            request.session['is_login'] = True

            return redirect('/index/')
        else:
            return render(request, 'login.html')
    else:
        pass
def index(request):
    # if request.session['is_login']:
    if request.session.get('is_login', None):
        user = request.session['username']
        return render(request, 'index.html', {'username':user})
    else:
        return HttpResponse('')


def logout(request):
    request.session.clear()
    return redirect('/login/')

 

login

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/login/" method="POST">
        <input type="text" name="user">
        <input type="password" name="pwd">
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>欢迎{{ username|safe }}登陆</h1>
    <h1>news_method:{{ request.session.username }}</h1>
    <a href="/logout/">注销</a>
</body>
</html>

 

posted on 2020-03-11 19:01  yeyu1314  阅读(128)  评论(0)    收藏  举报