會話保持及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'),

實現結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM