• 5、视图


    第1节:请求对象

    1.1 request对象的属性

    django将请求报文中的请求行、首部信息、内容主体封装成 HttpRequest 类中的属性。 除了特殊说明的之外,其他均为只读的。

    /*
    
    1.HttpRequest.GET
    
      一个类似于字典的对象,包含 HTTP GET 的所有参数。详情请参考 QueryDict 对象。
    
    2.HttpRequest.POST
    
      一个类似于字典的对象,如果请求中包含表单数据,则将这些数据封装成 QueryDict 对象。
       注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:
            request.POST.getlist("hobby")
    
    3.HttpRequest.body
    
       一个字符串,代表请求报文的请求体的原数据。
    
    4.HttpRequest.path
    
      一个字符串,表示请求的路径组件(不含域名)。
      例如:"/music/bands/the_beatles/"
    
    5.HttpRequest.method
    
      一个字符串,表示请求使用的HTTP 方法。必须使用大写。
      例如:"GET"、"POST"
    
    6.HttpRequest.META
    
       一个标准的Python 字典,包含所有的HTTP 首部。具体的头部信息取决于客户端和服务器,下面是一些示例:
    
        CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。
        CONTENT_TYPE —— 请求的正文的MIME 类型。
        HTTP_ACCEPT —— 响应可接收的Content-Type。
        HTTP_ACCEPT_ENCODING —— 响应可接收的编码。
        HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。
        HTTP_HOST —— 客服端发送的HTTP Host 头部。
        HTTP_REFERER —— Referring 页面。
        HTTP_USER_AGENT —— 客户端的user-agent 字符串。
        QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。
        REMOTE_ADDR —— 客户端的IP 地址。
        REMOTE_HOST —— 客户端的主机名。
        REMOTE_USER —— 服务器认证后的用户。
        REQUEST_METHOD —— 一个字符串,例如"GET" 或"POST"。
        SERVER_NAME —— 服务器的主机名。
        SERVER_PORT —— 服务器的端口(是一个字符串)。
       从上面可以看到,除 CONTENT_LENGTH 和 CONTENT_TYPE 之外,请求中的任何 HTTP 首部转换为 META 的键
        时,都会将所有字母大写并将连接符替换为下划线最后加上 HTTP_  前缀。所以,一个叫做 X-Bender 的头部将
        转换成 META 中的 HTTP_X_BENDER 键。
        
    7.HttpRequest.FILES
    
      一个类似于字典的对象,包含所有的上传文件信息。
       FILES 中的每个键为<input type="file" name="" /> 中的name,值则为对应的数据。
      注意,FILES 只有在请求的方法为POST 且提交的<form> 带有enctype="multipart/form-data" 的情况下才
      会包含数据。否则,FILES 将为一个空的类似于字典的对象。
    
    
    

    1.2 request对象的方法

    /*
    1.HttpRequest.get_full_path()
    
      返回 path,如果可以将加上查询字符串。
      例如:"/music/bands/the_beatles/?print=true"
    
    2.HttpRequest.is_ajax()
    
      如果请求是通过XMLHttpRequest 发起的,则返回True,否则返回False
      
    */
    

    第2节:响应对象

    响应对象主要有三种形式:

    • HttpResponse()
    • render()
    • redirect()

    HttpResponse()括号内直接跟一个具体的字符串作为响应体,比较直接很简单,所以这里主要介绍后面两种形式。

    2.1 render方法

    render(request, template_name[, context])
    #结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。
    

    参数:

     /*
     request: 用于生成响应的请求对象。
     template_name:要使用的模板的完整名称,可选的参数
     context:添加到模板上下文的一个字典,
              默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
              
              */
    

    render方法就是将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。

    2.2 redirect方法

    当您使用Django框架构建Python Web应用程序时,您在某些时候必须将用户从一个URL重定向到另一个URL,

    通过redirect方法实现重定向。

    参数可以是:

    • 一个绝对的或相对的URL, 将原封不动的作为重定向的位置.
    • 一个url的别名: 可以使用reverse来反向解析url

    传递要重定向到的一个具体的网址

    def my_view(request):
        ...
        return redirect("/some/url/")
    

    当然也可以是一个完整的网址

    def my_view(request):
        ...
        return redirect("http://www.baidu.com")
    

    传递一个视图的名称

    def my_view(request):
        ...
        return redirect(reverse("url的别名")) 
    
  • 相关阅读:
    typescript学习记录-联合类型(14)
    typescript学习记录-元组(13)
    typescript学习记录-Map(对象)(12)
    typescript学习记录-Array(数组)(11)
    typescript学习记录-String(10)
    typescript学习记录-Number(9)
    typescript学习记录-函数(8)重点重点
    typescript学习记录-循环(7)
    SQL注入基础知识及绕过方式
    暴力破解攻击方式及思路
  • 原文地址:https://www.cnblogs.com/pyedu/p/10289295.html
Copyright © 2020-2023  润新知