[Django] 我对dispatch的理解

这篇具有很好参考价值的文章主要介绍了[Django] 我对dispatch的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

views.py

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})

重点

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

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函数;文章来源地址https://www.toymoban.com/news/detail-640623.html

到了这里,关于[Django] 我对dispatch的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django中级指南:理解并实现Django的模型和数据库迁移

    Django 是一个极其强大的 Python Web 框架,它提供了许多工具和特性,能够帮助我们更快速、更便捷地构建 Web 应用。在本文中,我们将会关注 Django 中的模型(Models)和数据库迁移(Database Migrations)这两个核心概念。 在 Django 中,模型是一种特殊的对象,它对应数据库中的一张

    2024年02月13日
    浏览(31)
  • 记录我对傅里叶变换的理解和学习过程

    本人水平有限,文章仅作为自己的学习记录,且多用不严谨的、通俗易懂的语言去介绍。如有错误,希望大佬们多多批评指正。 系列文章01——记录我对傅里叶级数的理解和学习过程  如上图(左)所示,时域f(t)为一个周期信号,在上一讲中,我们学习了傅里叶级数,可以对它

    2024年02月04日
    浏览(29)
  • 我对DeepLab V3的理解(基于V1和V2)

    一、概述 1.前言 1.1 DeepLab v1 创新点: 空洞卷积(Atrous Conv); 解决编码过程中信号不断被下采样,细节丢失的问题 全连接条件随机场(Fully-connected Conditional Random Field)。 由于conv层提取的特征具有平移不变性,这就限制了定位精度。因此引入全连接CRF来提高模型捕获结构信息

    2024年02月11日
    浏览(20)
  • 字节二面,原来我对自动化测试的理解太浅了

    如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢? 01 什么是自动化 有很多人做了很长时间的自动化但却连自动化的概念都不清楚,这样的人也是很悲哀,做这样的职业,却连最基本的概念都不清楚。我给

    2023年04月11日
    浏览(31)
  • 深入理解WPF中的Dispatcher:优化UI操作的关键

      概述: Dispatcher是WPF中用于协调UI线程和非UI线程操作的关键类,通过消息循环机制确保UI元素的安全更新。常见用途包括异步任务中的UI更新和定时器操作。在实践中,需注意避免UI线程阻塞、死锁,并使用CheckAccess方法确保在正确的线程上执行操作。这有助于提升应用程序

    2024年02月04日
    浏览(30)
  • django使用mysql数据库

    Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动,但是目前对mysqlclient的支持更好,在驱动的基础

    2024年02月14日
    浏览(42)
  • Django的mysql数据库连接

    首先Mysql和navicate Premuim 已经安装好,并且可以建立数据库的连接,本次需使用的工具是 1、vs code 2、navicate Premuim 3、Mysql 打开vs code ,按Ctrl+ Shift + ~ ,调出vs code的终端界面,输入以下命令创建 test11 项目  django-admin startproject test11 (1)创建虚拟环境命令: 需要跳转到项目test1

    2024年02月05日
    浏览(52)
  • 【python】Django——连接mysql数据库

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 ORM(Object-Relational Mapping)是一种编程技术,它允许开发者使用面

    2024年02月04日
    浏览(45)
  • Vue3理解(7)

     事件处理 1.我们可以通过使用v-on指令(可以简写为@)来监听DOM事件,并在事件触发的时候执行对于的JavaScript代码。 2.事件处理器的值可以是内联事件处理器也可以是方法事件处理器,内联事件处理器指事件触发时执行的内联JavaScript语句,方法事件处理器指的是一个组件上定

    2024年02月07日
    浏览(18)
  • Django操作MySQL数据库的优化方法

    Django 是一个很流行的 Web 框架,而 MySQL 是常用的关系型数据库之一。在使用 Django 开发 Web 应用时,我们经常需要使用 MySQL 存储数据,因此如何加速 MySQL 是我们需要关注的问题。本文将介绍一些方法来优化 Django 中 MySQL 的性能。 使用适当的索引 索引是 MySQL 中提高查询性能的

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包