Django进阶
文章平均质量分 93
Django进阶高级开发技巧和实战总结
SteveRocket
总结技术,分享技术,交流技术,我们一起学习,韶华易逝......
展开
-
35、Django进阶:项目多种数据库配置方式和使用(MySQL、PGSQL、ES、MongoDB、InfluxDB)详解
1、首先介绍新建的Django项目中为什么一开始使用的是SQLite,以及我为什么不建议生产环境使用自带的SQLite数据库,然后介绍了SQLite的应用场景和优缺点。2、接着介绍为什么推荐生产环境项目使用MySQL。然后,依次是详细解析Django中对多种数据库(MySQL、PGSQL、ES、InfluxDB和MongoDB)的支持和配置方式的详解,比如在Django项目中使用MySQL/PGSQL数据库的配置方式和具体应用,在ES、MongoDB和influxdb数据库配置及应用实践中,解析原创 2023-12-08 08:00:00 · 1209 阅读 · 0 评论 -
7、Django进阶:Django路由系统精讲:揭秘Django的路由系统从URL映射到视图处理的全过程(必掌握)
对路由系统的定义和URL的模式做了介绍。详细介绍了Django路由系统的定义与使用,包括URL映射与路由匹配、参数传递与命名URL等内容。介绍了URLconf的配置和使用方法、URL的名称和反向解析,以及URL的参数。通过合理配置路由系统,我们能够实现灵活的URL映射和请求分发。通过include实现URLconf的嵌套Django路由系统的应用示例。URL的映射和路由匹配,以及路由系统的一个最佳实践。本文的最后一节总结了Django的三种路由配置方式:path()、re_path()原创 2023-12-11 08:00:00 · 739 阅读 · 0 评论 -
Django项目开发过程中出现的错误和解决方法集锦(持续更新)
Django项目开发过程中的错误和解决方法集锦。原创 2023-06-14 07:00:00 · 2812 阅读 · 0 评论 -
Django执行迁移过程中常见的错误和解决方法
Django执行迁移过程中常见的错误和解决方法。在开发过程中,需要仔细检查迁移文件和数据库结构,以确保迁移过程的正确性和稳定性。同时,需要不断学习和掌握新的技术和工具,以提高开发效率和质量。原创 2019-06-14 16:06:54 · 9562 阅读 · 1 评论 -
4、Django开发总结:Django项目文件和文件夹的合理布局
Django是一个流行的Web框架,它提供了一种方便的方法来构建高效的Web应用程序。在开发Django项目时,文件和文件夹的布局是至关重要的,因为它可以帮助您组织代码,使其易于维护和扩展。在本文中,我们将探讨Django项目文件和文件夹的合理布局。Django是一个高效、灵活、易于扩展的Python Web框架,它提供了一种基于模型-视图-控制器(MVC)的架构模式,使得开发人员能够快速构建高质量的Web应用程序。在开发Django项目时,一个好的文件夹布局是非常重要的,因为它有助于组织和管理项目文件,原创 2023-05-09 09:00:00 · 870 阅读 · 2 评论 -
42、Django开发总结:总结收纳40+Django日常开发常用第三方库
总结收纳40+Django日常开发常用第三方库,总结收纳日常Django项目开发中增效的第三方组件库。原创 2023-04-18 09:15:00 · 1485 阅读 · 0 评论 -
Django第三方库:使用Cookiecutter-django生成项目,及结构和优点详解
截止文章当前Cookiecutter-django在github上的stars有10.4k之多,Cookiecutter-django是一个用于快速创建Django项目的工具。它提供了一个模板,可以帮助开发者快速创建一个Django项目的基础结构,并且可以根据自己的需求进行定制。使用Cookiecutter-django可以大大减少Django项目的开发时间,同时也可以提高项目的可维护性和可扩展性。下面我们就来详细介绍一下Cookiecutter-django工具的使用方法和优点。原创 2023-05-13 08:00:00 · 1102 阅读 · 0 评论 -
28、Django开发总结:shortcuts快捷函数(shortcut function)模块详解
Django的快捷函数(shortcut function)是一组方便的函数,它们简化了常见的操作,例如重定向、渲染模板和获取对象。这些函数使得编写Django应用程序变得更加容易和快速。django.shortcuts包里提供了4个常用的快捷函数, 它们分别是render(), redirect(), get_objects_or_404()和get_list_or_404()。当在渲染模板,进行跳转或获取单个对象或对象清单时使用它们非常方便。原创 2023-04-27 09:00:00 · 551 阅读 · 0 评论 -
25、Django开发总结:settings.py设置选项详解
涉及settings.py默认配置项,以及自定义的MySQL、MongoDB、PostgreSQL、HAYSTACK、Redis详细参数、Memcached缓存、邮件服务、celery、自定义APP、自定义中间件、COOKIE与SESSION、TEMPLATES模板等配置项的详细说明。深入解读Django配置文件settings.py中的常用各个选项以及配置过程中的注意事项,注意: 在正式部署Django项目时一定要注意修改settings.py。原创 2023-03-19 01:54:40 · 2828 阅读 · 0 评论 -
19、Django开发总结:自带的常用装饰器应用场景及正确使用方法总结
装饰器(decorator)可以在不改变一个函数代码和调用方式的情况下给函数添加新的功能。装饰器广泛用于权限校验和缓存等场景。Django项目中使用装饰器可以让代码将变得更干净、更可读、更可维护。使用装饰器可以很方便地修改对象行为,通过使用类似接口将修改动作封装在装饰对象中.decorator可以动态地修改函数、方法或类的功能,而无需创建子类或修改类的源代码。减少了许多冗余但又不得不写的代码,使我们可以使用单个方法向多个类添加功能。原创 2023-03-31 20:00:00 · 1630 阅读 · 0 评论 -
13、Django开发总结:视图函数Request对象详解及获取用户请求的详细信息(附源码)
定义视图函数时def index(request, *args, ** kargs)总是要包含request这个变量,比如经常用request.user来判断当前访问用户状态。request对象包括了很多有用方法和信息。在view函数的执行过程中,可以用request的方法和属性来获取当前HTTP请求的头部信息(比如,正在加载这个页面的用户是谁,IP地址是多少,或者用的是什么浏览器)。本篇介绍Request对象包含哪些属性和方法,并开发一个简单的app来显示当前访问用户,IP地址及客户端(浏览器)信息。原创 2023-04-28 09:00:00 · 2046 阅读 · 0 评论 -
12、Django开发总结:URL重定向的HttpResponseDirect, redirect和reverse用法详解
重定向是指在视图函数中将用户重定向到另一个URL。利用django开发web应用, 经常需要进行URL重定向,有时候还需要给URL传递额外的参数。比如用户添加文章完成后需要转到文章列表或某篇文章详情。因此熟练掌握HttpResponseDirect, redirect和reverse这三种方法对于Django Web开发是至关重要,它们在不同的Django模块中。 HttpResponseDirect - django.http 适合用于重定向到外部URL或固定的URL。原创 2023-05-02 09:00:00 · 2970 阅读 · 0 评论 -
10、Django开发总结:Django缓存Cache应用场景、设置以及高级使用技巧
缓存(Cache)对于创建一个高性能的网站和提升用户体验来说是非常重要的,本篇介绍缓存Cache应用场景及工作原理,并详细介绍如何在Django中设置Cache并使用它们。下一篇介绍缓存的使用原理,比如Django是如何将数据存储到选定介质的以及django是如何判断缓存是否已经过期的。原创 2023-03-30 20:00:00 · 1448 阅读 · 0 评论 -
5、Django开发总结:View视图定义,工作原理,CBV/FBV及通用视图详解(附源码)
Django是一个基于MVC架构的Web框架,其中View视图是MVC架构中的控制器(Controller)部分,负责接收用户请求,处理请求,并返回响应结果。其中,通用视图可以帮助开发者快速构建常见的Web应用场景,同时也可以减少代码量和提高开发效率。开发者可以根据具体的业务需求选择合适的通用视图进行使用。View视图的大致工作原理如下:1.接收请求:View视图通过URL映射机制接收用户的请求。2.处理请求:View视图根据请求的类型(GET、POST等)和请求参数(如URL参数、表单数据等原创 2023-05-07 09:00:00 · 725 阅读 · 0 评论 -
3、Django开发总结:Model模型的介绍、字段属性、字段选项(参数)与设计详解
Model (模型) 简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。每个Django model实际上是个类,继承了models.Model。每个Model应该包括属性,关系(比如单对单,单对多和多对多)和方法。当定义好Model模型后,Django的接口会自动在数据库生成相应的数据表(table)。这样就不用自己用SQL语言创建表格或在数据库里操作创建表格了。原创 2023-05-04 09:00:00 · 3421 阅读 · 0 评论 -
2、Django开发总结:官方推荐编码规范
每种编程语言或框架都有自己的编码规范, 基于Python语言的Django框架也不例外。代码规范提供的指导方针旨在提高代码的可读性,并使其在各种Python代码中保持一致。原创 2023-03-20 00:00:00 · 816 阅读 · 0 评论 -
1、Django开发总结:Django MVT与MVC设计模式,请求过程与代码示例(附源码)
如果要开发一个好的网站或网络应用,就必需了解经典的软件开发所遵循的MVC 设计模式。本篇详细总结软件开发所遵循的MVC (Model-View-Controller, 模型-视图-控制器) 设计模式以及Django的MVT设计模式(Model-View-Template)如何遵循这种设计理念。Django Model(模型), URL(链接), View(视图) 和Template(模板)又是如何遵循MVC软件设计模式的。原创 2023-03-25 00:00:00 · 2465 阅读 · 0 评论 -
四十、Django单元测试:PGSQL数据库配置、常用测试工具、DB冲突方案和代码覆盖率实战
测试代码覆盖率只是说明对当前项目的测试比较充分,不能说明代码的质量高。单元测试在项目中扮演着重要的角色,在开发阶它可以帮助发现可能存在的问题、帮助重构,并且降低重构出错的风险。在项目后期,单元测试可以看作项目的一份说明文档,所以,理解并学会编写单元测试用例是十分有必要的。原创 2023-03-23 00:00:00 · 445 阅读 · 0 评论 -
三十九、Django单元测试:unittest、测试用例、断言方法总结
单元测试是软件工程中降低开发成本,提高软件质量常用方式之一,单元测试是一项由开发人员或者测试人员来对程序模块的正确性进行检验测试的工作,用于检查被测试代码的功能是否正确,养成单元测试的习惯,不但可以提高代码的质量,还可以提升自己的编程和技巧。Django 单元测试使用的是 Python 标准库 unittest 模块来定义相应的测试用例。单元测试其实就是对模块、类、函数实现的功能执行检测,看看是否满足预期,是否达到功能要求,它是一次检查检验的过程。如果某个模块或者函数满足预期,则表示测试通过,否则表示失败原创 2023-03-24 00:00:00 · 2064 阅读 · 0 评论 -
三十三、Django进阶:自定义manage.py shell管理命令以及案例(附源码)
自定义shell注意事项 management和commands每个目录下都必须有个__init__.py空文件,表明这是一个python包。另外以下划线开头的文件名不能用作管理命令脚本。 management/commands目录可以位于任何一个app的目录下,Django都能找到它。 一般建议每个python脚本文件对应一条管理命令。 当使用管理命令并希望在控制台输出指定信息时,应该使用self.stdout和self.stderr方法,而不能直接使用python的print方法。原创 2023-03-29 20:00:00 · 1228 阅读 · 0 评论 -
三十二、Django进阶:内置manage.py shell开发常用命令用法详解
在Django里django-admin.py和manage.py都是Django的命令工具集,用于处理系统管理相关操作,这两个文件代码和包含命令基本是一样的,而manage.py(用来管理创建好了的项目)是在创建Django工程时自动生成的,manage.py是对django-admin.py(一般只用来创建项目)的简单包装,二者的作用基本一致。原创 2023-03-28 20:00:00 · 1459 阅读 · 0 评论 -
二十三、 Django进阶:Django系统检查框架的使用和编写自定义检查方法
系统检查框架是一套用于验证 Django 项目的静态检查。它检测常见的问题,并提供如何修复这些问题的提示。该框架是可扩展的,所以可以很容易地添加自己的检查。通过 check 命令来显示的触发检查操作。检查会在大多数命令之前被隐式触发,包括 runserver 和 migrate 。出于性能原因,检查不会作为部署中使用的 WSGI 堆栈的一部分来运行。如果需要在部署系统上运行系统检查,可以使用 check 来触发他们。严重的错误将阻止 Django 命令(比如 runserver)运行。小问题将会在控制台原创 2023-04-22 09:00:00 · 211 阅读 · 0 评论 -
二十二、Django进阶:Django4.0引发的所有检查的完整列表(System check reference)
系统检查框架是一套用于验证 Django 项目的静态检查。它检测常见的问题,并提供如何修复这些问题的提示。该框架是可扩展的,所以可以很容易地添加自己的检查。通过 check 命令来显示的触发检查操作。检查会在大多数命令之前被隐式触发,包括 runserver 和 migrate 。出于性能原因,检查不会作为部署中使用的 WSGI 堆栈的一部分来运行。如果你需要在部署系统上运行系统检查,可以使用 check 来触发他们。严重的错误将阻止 Django 命令(比如 runserver)运行。原创 2023-05-03 09:00:00 · 812 阅读 · 0 评论 -
七、Django进阶:第三方库Django-extensions的开发使用技巧详解(附源码)
Django-extensions是 Django 的扩展应用,给django开发者提供了许多便捷的扩展工具(extensions),它提供了许多有用的工具和命令行工具,帮助 Django 开发者更高效地进行开发和调试。它的作用包括:- 提供了更多的Django命令,比如导出数据库、生成数据模型文档、查看URL路由表等;- 提供了一些有用的Django插件,比如shell_plus插件可以在Shell中自动导入项目的所有模块;原创 2023-04-14 01:00:00 · 1551 阅读 · 0 评论 -
一、Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件
Django项目开发或改动完成后将本地代码提交到代码库(比如github)时,需要考虑哪些文件需要提交,哪些不需要提交。这是因为有些库文件(比如缓存文件),本地日志文件还有一些编译文件是不必要提交的。这时可以使用.gitingnore文件忽略不需要提交的文件。原创 2023-03-19 00:30:59 · 1455 阅读 · 0 评论 -
15、DRF实战总结:2023 DRF框架序列化性能优化和cProfile性能基准测试(附源码)
Python中的序列化性能取决于使用的序列化库、数据大小和序列化/反序列化操作的复杂性。一些流行的Python序列化库包括pickle、json和msgpack。对于大型数据集,Cython和Pypy可以提高序列化性能。 本篇详细解析如何优化提升序列化时间减少到原来的99%,只需稍加注意并进行一些小的改变,就可以显著提高性能。原创 2023-04-17 10:00:00 · 694 阅读 · 2 评论 -
14、DRF实战总结:获取Django请求路径的方法以及各自的区别
Django项目开发中经常需要在视图中获取用户当前请求url的地址,然后进行跳转或判断操作,比如是否在url黑白名单里。Django提供了多种获取请求路径的实现方式,比如request.path, request.path_info, request.get_full_path和request.build_absolute_uri。原创 2023-04-12 08:00:00 · 922 阅读 · 0 评论 -
13、DRF实战总结:重写DRF的to_representation和to_internal_value方法的作用详解(附源码)
DRF的to_representation和to_internal_value是序列化和反序列化过程中最核心的方法,它们分别用于将数据对象转换成字典,和将字典转换成数据对象。DRF所有序列化器类都继承了BaseSerializer类,通过重写该类的to_representation()和to_internal_value()方法可以改变序列化和反序列化的行为,比如给序列化后的数据添加额外的数据,或者对客户端API请求携带的数据进行反序列化处理以及用来自定义序列化器字段。原创 2023-04-18 10:00:00 · 702 阅读 · 0 评论 -
12、DRF实战总结:DRF序列化模型与序列化关系模型详解(附源码)
序列化模型是将Python对象转换为可储存或传输的格式,如JSON或XML。序列化模型可以用于数据储存、数据传输和数据共享等方面,可以有效地提高数据传输效率和数据共享效率。序列化关系模型是在序列化模型的基础上,将关联的对象序列化为引用,简化了数据结构。序列化关系模型可以用于处理大量嵌套数据和减少数据传输量。序列化模型,即对 models 里的数据模型做序列化。而序列化关系模型则是对 models 里数据模型中带有关系的如 ForeignKey, ManyToManyField 和 OneToOneFie原创 2023-04-08 14:00:00 · 981 阅读 · 0 评论 -
11、DRF实战总结:使用cache_page和第三方库drf-extensions进行缓存(附源码)
对于经常被查询使用而且不怎么变化的数据, 建议对Django REST Framework(DRF)的响应数据进行缓存, 这样可以避免重复数据库查询, 大大加快响应时间。DRF支持两种数据缓存方式: 1. Django的原生cache_page装饰器; 2. drf-extensions这个第三方库提供的CacheResponseMixin的Mixin类。原创 2023-04-13 08:00:00 · 519 阅读 · 0 评论 -
10、DRF实战总结:限流(throttle)、限流的使用方式详解与代码示例(附源码)
限流(Throttle)就是限制客户端对API 的调用频率,是API开发者必须要考虑的因素。比如个别客户端(比如爬虫程序)短时间发起大量请求,超过了服务器能够处理的能力,将会影响其它用户的正常使用。又或者某个接口占用数据库资源比较多,如果同一时间该接口被大量调用,服务器可能会陷入僵死状态。为了保证API服务的稳定性,并防止接口受到恶意用户的攻击,必须要对的API服务进行限流。DRF中限制对API的调用频率非常简便,它为主要提供了3个可插拔使用的限流类。原创 2023-04-12 00:45:00 · 703 阅读 · 0 评论 -
9、DRF实战总结:过滤(filter)与排序,以及第三方库django-filter的使用(附源码)
django-filter是一个Django扩展,提供了方便的过滤数据的功能。它通过定义FilterSet类来实现,可以支持多个过滤条件,包括基于字段的精确匹配、范围过滤、搜索过滤等。django-filter的特点包括:1. 简单易用:只需要定义FilterSet类并指定需要过滤的字段即可。2. 定制性强:可以自定义过滤条件和过滤方法。3. 性能好:通过缓存机制提高过滤性能。4. 支持复杂查询:可以使用逻辑运算符(与、或、非)来组合多个条件进行复杂查询。原创 2023-04-11 08:00:00 · 2228 阅读 · 0 评论 -
8、DRF实战总结:分页(Pagination)及DRF提供的分页类详解(附源码)
DRF中的分页是指将数据按照一定数量分割成多页的显示方法。每页显示一定的数据量,可以通过用户点击或者其他手段进行翻页操作。DRF分页的作用是在返回数据时,将数据分页显示,避免一次性返回大量数据导致网络传输不稳定、用户体验不佳等问题。当的数据库数据量非常大时,如果一次将这些数据查询出来, 必然加大了服务器内存的负载,降低了系统的运行速度。一种更好的方式是将数据分段展示给用户。如果用户在展示的分段数据中没有找到自己的内容,可以通过指定页码或翻页的方式查看更多数据,直到找到自己想要的内容为止。原创 2023-04-10 20:00:00 · 1024 阅读 · 0 评论 -
7、DRF实战总结:JWT认证原理和使用及第三方库simplejwt 的详解(附源码)
JSON Web Token(JWT)是一种用于认证和授权的开放标准,允许在客户端和服务器之间传递信息,以验证用户身份和授权访问特定资源。它定义了一种紧凑且自包含的方式,用于各方之间安全地将信息以JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。JWT用于为应用程序创建访问token,通常适用于API身份验证和服务器到服务器的授权。JWT的优点包括:简单、轻量、可扩展、跨语言和跨平台使用。它也具有一定的安全性,因为JWT的签名只能由持有密钥的服务器生成和验证,且在传输过程中被中间人篡改可原创 2023-04-09 20:00:00 · 2143 阅读 · 2 评论 -
6、DRF实战总结:认证及使用Token认证,代码示例详解(附源码)
身份验证是将传入的请求对象(request)与一组标识凭据(例如请求来自用户或其签名的令牌token)相关联的机制。REST framework 提供了一些开箱即用的身份验证方案,并且还允许实现自定义方案。DRF的每个认证方案实际上是一个类。可以在视图中使用一个或多个认证方案类。REST framework将尝试使用列表中的每个类进行身份验证,并使用成功完成验证的第一个类返回的元组设置 request.user 和request.auth。原创 2023-04-08 20:00:00 · 2910 阅读 · 2 评论 -
5、DRF实战总结:认证(Authentication)与权限(Permission)(附源码)
在这种情况下,需要的是 IsAuthenticatedOrReadOnly 类,它将确保经过身份验证的请求获得读写访问权限,未经身份验证的请求将获得只读的权限。以及使用默认的基于session机制的用户认证。比如当访问单篇文章资源时,不仅可以看到红色的delete按钮和修改文章内容的表单,而且可以在未登录的情况对它们进行操作。无论是Django还是DRF, 当用户成功通过身份验证以后,系统会把已通过验证的用户对象与request请求绑定,这样就可以使用request.user获取这个用户对象的所有信息了。原创 2023-04-07 20:00:00 · 999 阅读 · 0 评论 -
4、DRF实战总结:序列化器(Serializer)、数据验证、重写序列化器方法详解(附源码)
将复杂的数据结构与python对象之间进行转换; 可以根据输入和输出数据的需要进行多级嵌套。 改变序列化输出数据的格式可以通过指定字段的source来源,使用SerializerMethodField自定义方法以及使用嵌套序列化器。 支持可以自定义验证和转换方法:反序列化时需要对客户端发送的数据进行验证。可以通过自定义validate方法进行字段或对象级别的验证,还可以使用自定义的validators或DRF自带的验证器。 当使用嵌套序列化器后,多个关联模型同时的创建和更新的行为并不明确原创 2023-04-05 12:00:00 · 1749 阅读 · 0 评论 -
3、DRF实战总结:基于类的视图APIView, GenericAPIView和GenericViewSet视图集(附源码)
DRF提供了4种编写CBV类API的方式,到底哪种CBV开发模式更好? 答案是各有利弊o 基础的API类:可读性最高,代码最多,灵活性最高。当需要对API行为进行个性化定制时,建议使用这种方式。o 通用generics.*类:可读性好,代码适中,灵活性较高。当需要对一个模型进行标准的增删查改全部或部分操作时建议使用这种方式。o 使用视图集viewset: 可读性较低,代码最少,灵活性最低。当需要对一个模型进行标准的增删查改的全部操作且不需定制API行为时建议使用这种方式。原创 2023-03-27 20:00:00 · 1264 阅读 · 0 评论 -
2、DRF实战总结:基于函数的视图API以及自定义序列化器(附源码)
前面介绍了什么是DRF,什么是序列化以及什么是符合RESTful规范的Web API。本篇使用DRF提供的序列化器(Serializers类),基于函数视图开发两个API接口并测试。https://blog.csdn.net/zhouruifu2015/article/details/129648966?spm=1001.2014.3001.5501需要值得注意的有以下几点:1. 定义序列化器时一定要注意区分read-only字段和常规字段,read-only字段通常对应用户不能自己操作(添加或修改)原创 2023-03-26 20:00:00 · 976 阅读 · 0 评论 -
1、DRF实战总结:DRF特点、序列化与RESTful API规范
Django这种基于MVC开发模式的传统框架,非常适合开发基于PC的传统网站,因为它同时包括了后端的开发(逻辑层、数据库层) 和前端的开发(如模板语言、样式)。现代网络应用Web APP或大型网站一般是一个后台,然后对应各种客户端(iOS, android, 浏览器)。由于客户端的开发语言与后台的开发语言经常不一样,这时需要后台能够提供可以跨平台跨语言的一种标准的资源或数据(如json或xml)供前后端沟通,这就是Web API(网络应用程序接口)的作用了。原创 2023-03-25 20:00:00 · 3497 阅读 · 0 评论