• 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:projectprojectsettings.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代表设置永不过期,不推荐
    
  • 相关阅读:
    mac与phy怎样实现网络自适应
    POJ 3304 Segments(计算几何:直线与线段相交)
    iOS类目
    MFC中改变控件的大小和位置(zz)
    Delphi中根据分类数据生成树形结构的最优方法
    Delphi下EasyGrid使用体会
    Delphi中Messagedlg用法
    Delphi获取其它进程窗口句柄的3种方法
    delphi获取一个窗口的所有子窗口(包括嵌套)
    关于获取其它程序窗口编辑框内容解决思路
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/10356766.html
Copyright © 2020-2023  润新知