django HttpResponse對象


HttpResponse對象
        概述:
            作用:給瀏覽器返回數據
            HttpRequest對象是由Django創建的,HttpResponse對象是由程序員創建
        用法:
            不用模板,直接返回數據
                語句示例:return HttpResponse("Sunck is a good man")
            調用模板
                使用render方法
                    原型:render(request, templateName[, context])
                    作用:結合數據和模板,返回一個完整的HTML頁面
                    參數:
                        request:請求體對象
                        templateName:模板路徑
                        context:傳遞給需要渲染在模板上的數據
        屬性
            content:表示返回內容
            charset:編碼格式
            status_code:響應狀態碼
                200
                304
                404
                400
            content-type:指定輸出的MIME類型
        方法
            init:使用頁面內容實例化HttpResponse對象
            write(content):以文件的形式寫入
            flush():以文件的形式輸出緩沖區
            set_cookie(key, value, maxAge=None, exprise=None)
            delete_cookie(key):
                刪除cookie
                如果刪除一個不存在的cookie,就當什么都沒發生
        子類HttpResponseRedirect
            功能:重定向,服務器端的跳轉
            簡寫
                redirect(to)
            to推薦使用反向解析
            示例:
                from django.http import HttpResponseRedirect
                from django.shortcuts import redirect
                def redirect1(request):
                    # return HttpResponseRedirect('/redirect2')
                    return redirect('/redirect2')
                def redirect2(request):
                    return HttpResponse("我是重定向后的視圖")
        子類JsonResponse
            返回Json數據,一般用於異步請求
            __init__(self.data)
            data 字典
            注意:Content-type類型為application/json
    狀態保持
        http協議是無狀態的,每次請求都是一次新的請求,它不記得之前的請求。
        客戶端與服務器的一次通信就是一次會話
        實現狀態的保持,在客戶端或服務端存儲有關會話的數據
        存儲的方式
            cookie:所有數據存儲在客戶端,不要存儲敏感的數據
            session:所有的數據存儲在服務端,在客戶端用cookie存儲session_id
        狀態保持的目的:
            在一段時間內跟蹤請求者的狀態,可以實現跨頁面訪問當前的請求者的數據
        注意:不同的請求者之間不會共享這個數據,與請求者一一對應
        啟用session:project\project\settings.py
            INSTALLED_APPS    'django.contrib.sessions',
            MIDDLEWARE    'django.contrib.sessions.middleware.SessionMiddleware',
        使用session
            啟用session后,每個httpRequest對象都有一個session屬性
            get[key, default=None]    根據鍵獲取session值
            clear()    清空所有會話
            flush()    刪除當前會話並刪除會話的cookie
            示例:
                # session
                def main(request):
                    # 取session
                    username = request.session.get('name', '游客')
                    print(username)
                    return render(request, 'myApp/main.html', {'username': username})

                def login(request):
                    return render(request, 'myApp/login.html')

                def showmain(request):
                    print("*****************")
                    username = request.POST.get('username')
                    # 存儲session
                    request.session['name'] = username
                    return redirect('/main/')

                from django.contrib.auth import logout
                def quit(request):
                    # 清除session
                    logout(request) # 方法1,推薦
                    # request.session.clear() # 方法2
                    request.session.flush() # 方法3
                    return redirect('/main/')
        設置session過期時間
            set_expiry(value)
            request.session.set_expiry(10)  設置為10秒后過期
            如果不設置,2個星期后過期
            value設置為0代表關閉瀏覽器時過期
            value設置為None代表設置永不過期,不推薦

 


免責聲明!

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



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