[Django] 我对dispatch的理解

views.py

javascript 复制代码
import json

from django.http import JsonResponse
from django.views import View
from myapp.models import UserKey


class Mysql_data(View):
    def dispatch(self, request, *args, **kwargs):
        action = kwargs.pop('action', None)
        if action == 'get_mysql_data':
            return self.mymodel_list(request, *args, **kwargs)
        if action == 'delete_data':
            return self.delete_data(request, *args, **kwargs)

    @staticmethod
    def mymodel_list(request):
        # values() 方法用于查询字段的数据。
        data = list(UserKey.objects.all().values())
        print(data)
        return JsonResponse({'my_data': data})

    @staticmethod
    def delete_data(request):
        mysql_data = json.loads(request.body)
        print(mysql_data)
        print(type(mysql_data))
        # # 根据id获取要删除的数据
        data = UserKey.objects.get(pk=mysql_data)
        # 删除数据
        a = data.delete()
        print(a)
        b = list(a)
        return JsonResponse({'status_code': 200, 'my_data': b})

重点

javascript 复制代码
class Mysql_data(View):
    def dispatch(self, request, *args, **kwargs):
        action = kwargs.pop('action', None)
        if action == 'get_mysql_data':
            return self.mymodel_list(request, *args, **kwargs)
        if action == 'delete_data':
            return self.delete_data(request, *args, **kwargs)

这一段代码中其他的都是固定的,主要看if语句和他的返回值,当action等于send_message时就调用main()函数,当action等于check_message时就调用post()函数,那么如何判断他的action?这就要在urls.py中设置:

urls.py

javascript 复制代码
from django.urls import path

from myapp.mysql_data import Mysql_data


# # 短信验证登录路由
urlpatterns = [
    # 显示数据库数据
    path('mysql_data/', Mysql_data.as_view(), {"action": "get_mysql_data"}),
    path('delete_data/', Mysql_data.as_view(), {"action": "delete_data"})
]

(FBV一般用于单个函数及其路由的调用,CBV用于两个及以上的函数调用路由,上面的urls.py里面就用了Django的CBV开发方法,详细看菜鸟教程;)

在path()中,使用了action 去分辨它。所以当调用mysql_data/ 路由时会执行mymodel_list函数 ,调用delete_data/ 路由时会调用delete_data函数;

相关推荐
剩下了什么7 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥7 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉8 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变8 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
ggabb9 小时前
中文的全息之美:字音藏道,字里见宇宙
sqlite
山岚的运维笔记10 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里10 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科10 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦11 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
WHD30611 小时前
苏州数据库(SQL Oracle)文件损坏修复
hadoop·sql·sqlite·flume·memcached