zoukankan      html  css  js  c++  java
  • django response reuqest

    HttpRequest objects

    属性

    HttpRequest.scheme

    表示请求协议的字符串(通常是http或https)。

    HttpRequest.body

    原始HTTP请求主体作为字节字符串。这对于以不同于传统HTML表单的方式处理数据非常有用:二进制图像、XML有效负载等。对于处理传统表单数据,使用HttpRequest.POST。

    HttpRequest.path

    表示请求页的完整路径的字符串,不包括HttpRequest.scheme或域名。
    示例:“/music/bands/ the_beatles /”

    HttpRequest.path_info

    在一些Web服务器配置中,主机名之后的URL部分被分成脚本前缀部分和路径信息部分。无论使用什么Web服务器,path_info属性总是包含路径的path info部分。使用这个替代路径可以使您的代码更容易在测试服务器和部署服务器之间移动。
    例如,如果应用程序的WSGIScriptAlias设置为“/minfo”,那么path可能是“/minfo/music/bands/”,path_info可能是“/music/bands/the_beatles/”

    HttpRequest.method

    表示请求中使用的HTTP方法的字符串。这保证是大写的。

    if request.method == 'GET':
        do_something()
    elif request.method == 'POST':
        do_something_else()
    

    HttpRequest.encoding

    HttpRequest.encoding

    表示请求的MIME类型的字符串,从CONTENT_TYPE报头解析

    HttpRequest.content_params

    CONTENT_TYPE报头中包含的键/值参数字典

    HttpRequest.GET

    包含所有HTTP GET参数的类字典对象。

    HttpRequest.POST

    包含所有HTTP POST参数的类字典对象。

    HttpRequest.COOKIES

    包含所有cookie的字典。键和值是字符串。

    HttpRequest.FILES

    包含所有上传文件的类字典对象。文件中的每个键是来自<input type="file" name=" >。文件中的每个值都是一个上传文件。

    如果请求方法是POST,并且提交到请求的

    具有enctype="multipart/form-data",文件将只包含数据。否则,文件将是一个类似于字典的空白对象。

    HttpRequest.META

    包含所有可用HTTP头的字典。可用的标头取决于客户端和服务器,但这里有一些例子

    HttpRequest.current_app

    url模板标记将使用它的值作为current_app参数来反转()

    HttpRequest.urlconf

    这将用作当前请求的根URLconf,覆盖ROOT_URLCONF设置。

    HttpRequest.session

    来自SessionMiddleware:一个可读的、可写的、类词典的对象,它代表当前会话。

    HttpRequest.site

    来自CurrentSiteMiddleware:表示当前站点的get_current_site()返回的站点或RequestSite实例。

    HttpRequest.user

    来自AuthenticationMiddleware: AUTH_USER_MODEL的实例,该实例表示当前登录的用户。如果用户当前没有登录,用户将被设置为AnonymousUser实例。你可以用is_authenticated区分它们,比如:

    if request.user.is_authenticated:
        ... # Do something for logged-in users.
    else:
        ... # Do something for anonymous users.
    

    方法

    HttpRequest.get_host()

    返回host
    

    HttpRequest.get_port()

    返回port
    

    HttpRequest.get_full_path()

    返回path
    

    HttpRequest.get_full_path_info()

    返回path_info
    

    HttpRequest.build_absolute_uri(location)

    返回location绝对路径,若不提供location参数,默认使用HttpRequest.get_full_path()
    

    HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

    返回cookie的值,defalut为默认值,salt防止暴力破解密钥,max_age为生命周期
    
    >>> request.get_signed_cookie('name')
    'Tony'
    >>> request.get_signed_cookie('name', salt='name-salt')
    'Tony' # assuming cookie was set using the same salt
    >>> request.get_signed_cookie('nonexistent-cookie')
    ...
    KeyError: 'nonexistent-cookie'
    >>> request.get_signed_cookie('nonexistent-cookie', False)
    False
    >>> request.get_signed_cookie('cookie-that-was-tampered-with')
    ...
    BadSignature: ...
    >>> request.get_signed_cookie('name', max_age=60)
    ...
    SignatureExpired: Signature age 1677.3839159 > 60 seconds
    >>> request.get_signed_cookie('name', False, max_age=60)
    False
    

    HttpRequest.is_secure()

    如果是安全的(https请求)返回True
    

    HttpRequest.is_ajax()

    如果是ajax请求 返回True
    

    HttpRequest.read

    HttpRequest.readline()

    HttpRequest.readlines()

    HttpRequest.iter()

    提供了可迭代方法
    

    HttpRresponse objects

    用法

    典型的用法是将页面的内容作为字符串传递

    >>> from django.http import HttpResponse
    >>> response = HttpResponse("Here's the text of the Web page.")
    >>> response = HttpResponse("Text only, please.", content_type="text/plain")
    

    如果您想增量地添加内容,您可以使用response作为类文件对象

    >>> response = HttpResponse()
    >>> response.write("<p>Here's the text of the Web page.</p>")
    >>> response.write("<p>Here's another paragraph.</p>")
    

    设置头信息

    类似与字典的用法

    >>> response = HttpResponse()
    >>> response['Age'] = 120
    >>> del response['Age']
    

    告诉浏览器将响应视为文件附件

    要告诉浏览器将响应视为文件附件,请使用content_type参数并设置内容配置头。

    # 返回Microsoft Excel电子表格的方式:
    >>> response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
    >>> response['Content-Disposition'] = 'attachment; filename="foo.xls"'
    

    属性

    HttpResponse.content

    HttpResponse.charset

    HttpResponse.status_code

    HttpResponse.reason_phrase

    HttpResponse.streaming

    HttpResponse.closed

    方法

    HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None)[source]
    
    HttpResponse.__delitem__(header)
    
    HttpResponse.__getitem__(header)
    
    HttpResponse.has_header(header)
    
    HttpResponse.setdefault(header, value)
    
    HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None)
    
    HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None)
    
    HttpResponse.delete_cookie(key, path='/', domain=None)
    
    HttpResponse.flush()
    
    HttpResponse.tell()[source]
    
    HttpResponse.getvalue()[source]
    
    HttpResponse.readable()
    
    HttpResponse.seekable()
    
    HttpResponse.writable()[source]
    
    HttpResponse.writelines(lines)[source]
    

    HttpResponse subclasses

    HttpResponseRedirect

    重定向
    

    HttpResponsePermanentRedirect

    永久重定向,返回状态码301而不是302
    

    HttpResponseNotModified

    构造函数不接受任何参数,并且不应该向此响应添加任何内容。使用此设置可以指定自用户上次请求(状态码304)以来没有修改过页面。
    

    HttpResponseBadRequest

    像HttpResponse一样,使用400状态码。
    

    HttpResponseNotFound

    像HttpResponse一样,使用404状态码。
    

    HttpResponseForbidden

    像HttpResponse一样,使用403状态码。
    

    HttpResponseNotAllowed

    像HttpResponse一样,使用405状态码。
    

    HttpResponseGone

    像HttpResponse一样,使用410状态码。
    

    HttpResponseServerError

    像HttpResponse一样,使用500状态码。
    

    JsonResponse

    class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)

    HttpResponse子类,帮助创建json编码的响应。它继承了它的超类的大部分行为,但有几个不同之处:
    它的默认内容类型头被设置为application/json。

    data:应该是一个dict实例。如果将安全参数设置为False(参见下面),那么它可以是任何JSON-serializable对象。

    encoder:默认为django.core.serializers.json.DjangoJSONEncoder,将用于序列化数据。有关这个序列化器的详细信息,请参阅JSON序列化。

    safe:默认为True。如果设置为False,则可以为序列化传递任何对象(否则只允许使用dict实例)。如果safe为真,并且将一个非dict对象作为第一个参数传递,则会引发类型错误。

    json_dumps_params:是一个关键字参数字典,用于传递给用于生成响应的json.dumps()调用。

    用法

    >>> from django.http import JsonResponse
    >>> response = JsonResponse({'foo': 'bar'})
    >>> response.content
    b'{"foo": "bar"}'
    

    序列化一个非字典对象

    >>> response = JsonResponse([1, 2, 3], safe=False)
    

    使用自定义编译器

    >>> response = JsonResponse(data, encoder=MyJSONEncoder)
    

    StreamingHttpResponse

    StreamingHttpResponse类用于将Django的响应流传输到浏览器。如果生成响应的时间太长或占用了太多内存,您可能希望这样做。例如,它对于生成大型CSV文件非常有用。

    性能考虑
    Django是为短期请求而设计的。流响应将在响应的整个持续时间内连接工作进程。这可能导致较差的性能。
    一般来说,您应该在请求-响应周期之外执行昂贵的任务,而不是求助于流响应。 
    

    属性

    StreamingHttpResponse.streaming_content

    表示内容的字符串的迭代器。
    

    StreamingHttpResponse.status_code

    Http请求的状态码
    

    StreamingHttpResponse.reason_phrase

    Http的reason phrase。
    

    StreamingHttpResponse.streaming

    总是True
    

    FileResponse objects

    class FileResponse(open_file, as_attachment=False, filename='', **kwargs)

    >>> from django.http import FileResponse
    >>> response = FileResponse(open('myfile.png', 'rb'))
  • 相关阅读:
    vue导航守卫和axios拦截器的区别
    js中的深拷贝与浅拷贝
    Storyboard中拖拽控件不能运行的问题(在运行的时候,相应的控件代码没有被执行)
    关于stringWithFormat:
    两层嵌套的JSON包的解法
    button的action属性如果有参数,必须加“:”
    iOS 协同开发出fatal error: file 'XX-Prefix.pch' has been modified since the precompiled header was built
    [转] Objective-C语法快速参考
    iOS应用程序内存查看工具
    XCode快捷键大全
  • 原文地址:https://www.cnblogs.com/LTEF/p/9736820.html
Copyright © 2011-2022 走看看