zoukankan      html  css  js  c++  java
  • Django中类视图的简介及使用

    类视图

    1 类视图引入

    以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。

     def register(request):
        """处理注册"""
    
        # 获取请求方法,判断是GET/POST请求
        if request.method == 'GET':
            # 处理GET请求,返回注册页面
            return render(request, 'register.html')
        else:
            # 处理POST请求,实现注册逻辑
            return HttpResponse('这里实现注册逻辑')
    

    在Django中也可以使用类来定义一个视图,称为类视图

    使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。如下所示

    from django.views.generic import View
    
    class RegisterView(View):
        """类视图:处理注册"""
    
        def get(self, request):
            """处理GET请求,返回注册页面"""
            return render(request, 'register.html')
    
        def post(self, request):
            """处理POST请求,实现注册逻辑"""
            return HttpResponse('这里实现注册逻辑')
    

    类视图的好处:

    • 代码可读性好
    • 类视图相对于函数视图有更高的复用性, 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可

    2 类视图使用

    定义类视图需要继承自Django提供的父类View,可使用from django.views.generic import View或者from django.views.generic.base import View 导入,定义方式如上所示。

    配置路由时,使用类视图的as_view()方法来添加。

    urlpatterns = [
        # 视图函数:注册
        # url(r'^register/$', views.register, name='register'),
        # 类视图:注册
        url(r'^register/$', views.RegisterView.as_view(), name='register'),
    ]
  • 相关阅读:
    转发 GSLB概要和实现原理
    通过openresty && tengine && nginx 动态添加资源到 html 页面
    Terraform 多云管理工具
    vault key 管理工具
    fabio
    keycloak 了解
    访问交换机的三种方式
    LAN、WAN、WLAN的区别
    浅谈团队贡献分如何分配
    Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
  • 原文地址:https://www.cnblogs.com/skaarl/p/9456824.html
Copyright © 2011-2022 走看看