zoukankan      html  css  js  c++  java
  • Django视图Request和Response

    视图层

    一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。

    响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片...

    无论视图本身包含什么逻辑,都要返回响应。代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中。

    每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应。

    视图层中有两个重要的对象:请求对象(request)与响应对象(HttpResponse)。

    一、请求对象: HttpRequest 对象(简称 request 对象)

    以下介绍几个常用的 request 属性。

    1、GET对象

    数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP GET 的所有参数。

    有相同的键,就把所有的值放到对应的列表里。

    取值格式:对象.方法。

    get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

    修改views.py中的代码

    def demo1(request):
        name = request.GET.get("name")
        return HttpResponse('姓名:{}'.format(name))

    使用postman访问

    2、POST对象

    数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP POST 的所有参数。

    常用于 form 表单,form 表单里的标签 name 属性对应参数的键,value 属性对应参数的值

    取值格式: 对象.方法。

    get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

    修改views.py代码

    def demo1(request):
        name = request.POST.get("name")
        return HttpResponse('姓名:{}'.format(name))

    使用postman访问报错:

    Forbidden (CSRF cookie not set.): /demo1/

    解决办法:修改settings.py文件,注释掉django.middleware.csrf.CsrfViewMiddleware',

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]

    3、body对象

    数据类型是二进制字节流,是原生请求体里的参数内容,在 HTTP 中用于 POST,因为 GET 没有请求体。

    在 HTTP 中不常用,而在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML、Json 等。

    修改vies.py

    def demo1(request):
        name = request.body
        print(name)
        return HttpResponse("菜鸟教程")

    postman访问

     控制台打印

    b'{"name":"zwh"}'

    4、path对象

    获取 URL 中的路径部分,数据类型是字符串。

    修改views.py

    def demo1(request):
        name = request.path
        print(name)
        return HttpResponse("菜鸟教程")

    postman访问

     控制台打印

    /demo1/

    5、method对象

    获取当前请求的方式,数据类型是字符串,且结果为大写。

    修改views.py

    def demo1(request):
        name = request.method
        print(name)
        return HttpResponse("菜鸟教程")

    postman访问

     控制台打印

    POST

     二、响应对象:HttpResponse 对象

    响应对象主要有三种形式:HttpResponse()、render()、redirect()。

    HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。

    修改views.py

    def demo1(request):
        return HttpResponse("<a href='https://www.runoob.com/'>菜鸟教程</a>")

    浏览器访问:http://127.0.0.1:8000/demo1/

     render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。

  • 相关阅读:
    矩阵
    向量
    Matlab中的基本数据类型介绍
    静态代码块在何时调用
    保留上次访问网站的时间的几种方法
    用ServletContext做一个简单的聊天室
    ServletContext结合Servlet接口中的init()方法和destroy()方法的运用----网站计数器
    用ServletContext读取.properties文件
    用类加载器的5种方式读取.properties文件
    如何用cookie保存用户的登录的密码和用户名
  • 原文地址:https://www.cnblogs.com/zwh0910/p/15257628.html
Copyright © 2011-2022 走看看