码迷,mamicode.com
首页 > Web开发 > 详细

django HttpResponse对象

时间:2019-02-08 22:02:01      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:状态码   结合   contex   .sh   缓冲   属性   pps   实例   render   

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代表设置永不过期,不推荐

 

django HttpResponse对象

标签:状态码   结合   contex   .sh   缓冲   属性   pps   实例   render   

原文地址:https://www.cnblogs.com/superxuezhazha/p/10356766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!