【Django学习】(四)子应用改写函数视图为类视图

前面我们使用的函数视图来返回接口请求结果,函数视图有一定的局限性:

  • 函数视图:
    • 好理解
    • 代码可读性与复用性都不好
  • 类视图:
    • 可读性与复用性更好
    • 不同的请求方式以不同的方法呈现,结构更清晰

一、定义类视图

1、在子应用的views.py文件中定义类

导入相关模块

from django.http import HttpResponse, JsonResponse
from django.views import View

2、必须继承View父类或者View子类

  • 对应的请求方式对应不同的方法:
    • get请求---->get方法
    • post请求---->post方法
    • put请求---->put方法
    • delete请求---->delete方法
  • 请求方法,第一个参数是类视图对象,第二个参数是请求的HttpRquest对象

class MyView(View):
    def get(self, request):
        return HttpResponse("GET请求")

    def post(self, request):
        return HttpResponse("POST请求")

    def put(self, requst):
        return HttpResponse("PUT请求")

    def patch(self, request):
        return HttpResponse("PATCH请求")

    def delete(self, request):
        return HttpResponse("DELETE请求")

3、添加类视图路由

在子应用的子路由中添加类视图路由

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index1/', index1),
    re_path('^index2/$', index2),
    #类视图路由的定义,views.类视图.as_view(),as_view必须要加括号,不然后面运行会有报错
    path('index4/',views.MyView.as_view())

 注意:类视图路由的定义,views.类视图.as_view(),as_view必须要加括号,不然后面运行会有报错

调用接口:

二、通过渲染模版 ,来渲染返回数据

1、在项目的根路径中添加templates文件夹(专业版本的pycharm创建Django项目时会自动创建templates文件夹),用来存放html模版

2、在全局配置文件夹中的settings.py的TEMPLATES配置中将templates文件夹的路径添加到DIRS参数中

 说明:

  • DIRS列表中存放的是模版的路径,如果子应用中也有模版的话,也需要将模版文件夹的路径添加到DIRS列表中;
  • 'APP_DIRS': True,意思是允许Django项目进入都子应用去搜索模版

3、在子应用的视图类的视图方法中调用render函数,将制定的模版名作为第二个参数

如果输入渲染模版文件时候没有智能提示,那么我们需要将渲染文件夹标记为模版文件夹。 

 说明:

  • render函数,是将html模版渲染后返回给浏览器
  • 第一个参数是HttpRequest对象,第二个参数是模版名称

index.html模版文件,通过jinja2渲染语法进行填充

 打开网页后的页面展示:

三、通过 JsonResponse方法返回数据

class MyView(View):
    def get(self, request):
        data=[
            {"project_name":"前程带项目",
             "leader":"花生",
             "app_name":"P2P平台项目"},
            {"project_name": "测试开发平台",
             "leader": "高老庄",
             "app_name": "随便平台项目"}
        ]
        return JsonResponse(data,safe=False)

JsonResponse中第一个参数为返回的数据,第二个参数为是否打开安全模式

safe安全模式:当data为字典类型时,安全模式打不打开无所谓;

当data数据为其他类型的时候(比如字符串,嵌套字典的列表等),就要关闭安全模式,设置为safe=False,否则无法通过安全模式导致报错

接口返回为json格式数据

 这样我们就可以做到前后端分离的模式,后端只需要返回json数据给前端展示在不同的端页面上(PC、app、浏览器)

四、通过HttpResponse方法返回json数据

    def post(self, request):

        data_dict={
            "name":"花生",
            "age":18,
            "other":"superman"
        }
        json_str=json.dumps(data_dict,ensure_ascii=False)
        return HttpResponse(json_str,content_type="application/json",status=201)

        视图函数和类视图中的请求方法,一定要返回HttpResponse对象或者子类对象
        a.第一个参数为content,需要传递响应数据(类型为字符串或者字节类型)
        b.可以使用content_type关键字参数来指定响应报文类型(text/html、application/json等等)

        c.可以使用status关键字参数来指定响应状态码

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django 有两种主要的视图方式:类视图函数视图。它们各自有自己的优势和适用场景。下面是 Django视图函数视图的对比: 1. 类视图: - 类视图是基于类的视图,通过继承 Django 提供的基础类来实现。 - 类视图提供了更强大的功能和更高级的抽象,可以处理更复杂的逻辑和场景。 - 类视图提供了一组标准的 HTTP 方法(如 GET、POST、PUT 等)对应于不同的请求类型,使得处理不同请求类型的逻辑更加清晰。 - 类视图具有可重用性,可以通过继承来扩展和定制。 - 类视图通常用于需要处理多个请求类型、需要复杂逻辑或需要使用 Mixin 的场景。 2. 函数视图: - 函数视图是基于函数视图,直接编写函数来处理请求和生成响应。 - 函数视图简单直观,适用于处理简单的逻辑和场景。 - 函数视图可以更加灵活地处理请求和响应,可以直接控制返回的数据类型和格式。 - 函数视图可以在一个文件编写,使得代码结构更简洁。 - 函数视图通常用于处理简单的请求、快速原型开发或者需要直接控制请求和响应的场景。 总体而言,类视图适用于处理复杂的逻辑和场景,具有更高级的抽象和可重用性;而函数视图则适用于处理简单的逻辑和场景,具有更灵活的请求和响应控制。具体选择哪种视图方式取决于项目的需求和个人偏好。在实际开发,通常会根据具体情况来选择使用类视图函数视图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高老庄里的高小翠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值