内容介绍
Django 是用 Python 开发的一个免费开源的 Web 框架,提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。并且囊括的 Web 应用部分可以用于快速搭建高性能、优雅的网站。并且提供了通用 Web 开发模式的高度抽象,
通过 DRY(Don’t Repeat Yourself,不要重复自己)的理念为频繁进行的编程作业提供了快速解决方法。
Django 特点
1.自带管理后台 简单的几行代码就可以让目标网站拥有一个强大的管理后台,轻松对内容进行增加、删除、修改与查找操作,以及很方便地定制搜索、过滤等操作,因此特别适合用于内容管理平台。 2.灵活的路由系统 定义优雅的访问地址,还可伴随项目进行配置。
3.强大的数据库 ORM 强大的数据库操作接口(QuerySet API)可以轻松执行原生 SQL。 4.易用的模板系统 基于前后端分离系统可用 Django 开发 API,不使用模板系统,并也可以轻易替换成其他模板。 5.缓存系统 与 Memcached,Redis 等缓存系统联合使用,获得更快的加载速度,并且配置简单。
6.国际化支持 支持多语言应用,允许定义翻译的文字,轻松翻译成不同国家/地区的语言。
Django 发布情况
功能版本(A.B,A.B+1,如 2.0,2.1 等)大约每 8 个月发布一次。这些版本将包含新功能以及对现有功能的改进等,也可能包含与上一个版本不兼容的功能,详细的说明在版本的发布日志(Release Notes)中可以查阅到。
补丁版本(A.B.C,如 2.1.3)会根据需要发布,以修复错误和安全问题。这些版本将与相关的功能版本 100% 兼容,除非是出于安全原因或为了防止数据丢失而无法做到 100% 兼容。
正因为如此,如果之前使用的是 Django 3.0,现在最新的版本是 Django 3.0.3,那么可以放心将 3.0 版本升级到 3.0.3版本。
某些功能版本被指定为长期支持(LTS)版本,这种稳定版本通常自发布之日起 3 年以内,会持续发布安全和关键补丁,即所谓提供持续稳定的支持。
从 Django 2.0 开始,它不再支持 Python 2。
下图演示了 Django 各版本的发布情况和支持计划
Django 的 MVT 架构
Django 是一个 Python Web 框架,和大多数框架一样支持 MVC模式。
通过学习 MVC(Model-View-Controller)模式,了解 Django MVT(Model-View-Template)的不同之处。
1.MVC 模式 MVC 是开发 Web 应用程序的一种软件设计模式,其中各部分功能如下: 模型(Model):位于模式底层,负责管理应用程序的数据。它处理来自视图的请求,并且响应来自控制器的指令以更新自身。 视图(View):负责向用户以特定格式呈现全部或部分数据。 控制器(Controller):控制模型和视图之间交互的代码。
2.MVT 模式 MVT 与 MVC 区别在于 Django 本身已经实现了控制器(Controller)这部分的功能,暴露给开发者的是模板(Template)。
所以可以简单认为 Django 中的模板是 HTML 文件,但其支持 Django 的模板语言。这种模板语言简单来说就是通过占位符、循环、逻辑判断等来控制页面上的内容展示。
Django 和其他 Python Web 框架的对比
用于 Python Web 开发的框架有很多,比如 Flask、Bottle、Pyramid、Webpy 等。
1. Django 和 Flask 的对比
Flask 是小而精的微框架(Micro Framework),它不像 Django 那样大而全。如果使用 Flask 开发,开发者需要自己决定使用哪个数据库 ORM、模板系统、用户认证系统等,需要自己去组装这些系统。
与 Django 开发相比,开发者在项目开始的时候可能需要花更多的时间去了解、挑选各个组件,正因为这样,Flask 开发的灵活度更高,开发者可以根据自己的需要去选择合适的插件。
由于是自己一步步地将整个系统组装起来的,因此也比较容易了解各个组件部分。当然,Flask 历史相对更短,第三方 App 自然没有 Django 那么全面。
2. Django 和 Tornado 的对比 Tornado 是一个 Python Web 框架和异步网络库,最初由 FriendFeed 开发,当初设计它的目的是为了解决 10000 个并发连接(C10K 问题)。
传统的 Apache 服务器会为每个 HTTP 请求连接一个线程,而在大多数 Linux 发行版中默认线程堆(Heap)大小是 8MB,当连接数量过多时,这种线程池的方式极易耗光服务器上的所有资源。Tornado 会把等待资源的操作挂起,当数据准备好时,再回调相应的函数。通过使用非阻塞网络 I/O,Tornado 可以轻松应对数万个连接。因而 Tornado 也就成为长轮询,是 WebSocket 和其他需要与每个用户建立长期连接的应用程序的理想选择。
和 Django 相比,使用 Tornado 编写异步代码对于开发者来说,没有 Django 或 Flask 编写同步代码那么简单、直接和高效。
问题:使用 Python 进行 Web 开发合适吗?
Python 简单易学、上手快速,成为很多程序员喜爱的编程语言。使用 Python 进行 Web 应用开发,无疑能够加快需求实现的速度,快速迭代和验证产品的原型。有些人可能会有疑问:Python 性能不够好,用来开发 Web 是不是不太合适?
Python 在性能上确实无法和 C语言、Java 等语言相比,但在大部分情况下使用 Python 开发是可以满足性能需求的,并且很多时候程序性能不够好,这不是语言本身的问题,而是架构设计、缓存设计、数据结构算法的选用以及开发人员编程水平等引起的问题。
总之,使用 Python 语言进行 Web 开发有独特的优势,通常能满足大部分应用场景的需求。
Django 自学文章目录
看懂Django框架,没有最好只有更好
版本说明
- 「Python」源码版本 3.6
- 「MySQL」源码版本 5.7
- 「Mongodb」源码版本 3.4
- 「Django Web框架」源码版本 3.x
- 「Django REST Framework 框架」 源码版本 3.12.x
日常开发工具使用 最新版 PyCharm 免激活&免安装专业版安装指南,帮你每年省199美刀 在windows下安装Python,Anaconda最新版本、免费Pycharm极简教程 在 Jupyter Notebook 文档页面中添加目录索引及错误解决办法 在 Centos7.x 上快速搭建 Python 环境最简流程 在 Centos7.x 上快速搭建 MySQL 5.7 及错误处理 在 Centos7.x 上快速搭建 MongoDB 3.4及用户设置 在 Centos7.x 上处理 Django 3.x 中 sqlite3 安装、升级、使用、错误处理 解决 Pycharm 输出信息中文乱码问题 Win10+Python3.8+Tensorflow-gpu 2.4.0 环境搭建及使用最简流程 Tensorflow-gpu1.x版本和Tensorflow-gpu2.x版本共存之法
Django3.x 基础篇:《Django 3.x Web框架全解》
「Django 3.x 框架」模型的Meta选项应用 「Django 3.x 框架」模型的创建&使用 「Django 3.x 框架」模型的字段关联关系应用 「Django 3.x 框架」模型字段类型的说明&应用 「Django 3.x 框架」安全CSRF配置&应用 「Django 3.x 框架」表单模板 Form 和 Templates配置&应用 「Django 3.x 框架」测试Test配置&应用 「Django 3.x 框架」错误报告Report配置&应用 「Django 3.x 框架」电子邮件Email配置&应用 「Django 3.x 框架」调试Debug配置&应用 「Django 3.x 框架」缓存Caches服务配置&应用 「Django 3.x 框架」会话Session配置&应用 「Django 3.x 框架」静态文件Static配置&应用 「Django 3.x 框架」模型表单Models配置&应用 「Django 3.x 框架」全球化Globalization配置&应用 「Django 3.x 框架」日志Log配置&应用 「Django 3.x 框架」数据仓库DATABASES配置&应用 「Django 3.x 框架」网络协议HTTP配置&应用 「Django 3.x 框架」网址WWW配置&应用 「Django 3.x 框架」文件上传File配置&应用 「Django 3.x 框架」消息Message配置&应用 「Django 3.x 框架」序列化Serialization配置&应用 「Django 3.x 框架」验证Auth配置&应用 「Django 3.x 框架」站点Site配置&应用
Django API 基础篇 《Django REST Framwork框架全解》
「Django REST Framework 框架」Authentication验证解析及应用举例 「Django REST Framework 框架」Caching缓存解析及应用举例 「Django REST Framework 框架」Content negotiation内容协商解析及应用举例 「Django REST Framework 框架」Filtering过滤解析及应用举例 「Django REST Framework 框架」Format suffixes格式后缀解析及应用举例 「Django REST Framework 框架」Generic view通用视图解析及应用举例 「Django REST Framework 框架」Parsers解析器解析及应用举例 「Django REST Framework 框架」Permissions权限解析及应用举例 「Django REST Framework 框架」Renderers渲染器解析及应用举例 「Django REST Framework 框架」Request请求解析及应用举例 「Django REST Framework 框架」Response响应解析及应用举例 「Django REST Framework 框架」Returning URLs返回链接解析及应用举例 「Django REST Framework 框架」Router路由解析和应用举例 「Django REST Framework 框架」Serializers fields字段解析及应用举例 「Django REST Framework 框架」Serializers ModelSerializer模型序列化及应用举例 「Django REST Framework 框架」Serializers relations序列化关系应用举例 「Django REST Framework 框架」Serializers序列化业务逻辑应用举例 「Django REST Framework 框架」Status Codes状态响应解析及应用举例 「Django REST Framework 框架」Throttling节流解析及应用举例 「Django REST Framework 框架」Validators验证解析及应用举例 「Django REST Framework 框架」ViewSet视图设置解析及应用举例 「Django REST Framework 框架」View视图解析及应用举例 「Django REST Framework 框架」使用入门及效果展示
框架模板
「Django 框架模板」快速配置一个Django Web项目 「Django 框架模板」新闻行业资讯数据后端API接口开发模板
功能开发
「Django 功能开发」使用 JavaScript 实现 JWT Token 用户登陆、登出功能 「Django 功能开发」解决xadmin重写User表单密码明文改加密的方法 「Django 功能开发」views视图中自动累计访问次数的通用方法 「Django 功能开发」views视图中网站访问的IP记录通用方法 「Django 功能开发」adminx中统计外键关联内容数量的通用方法 「Django 功能开发」在adminx编辑页面自动填充当前用户和指定用户隐藏通用方法 「Django 功能开发」在adminx更新表单自动同步更新到指定表单通用方法 「Django 功能开发」在adminx编辑页面隐藏指定字段的通用方法 「Django 功能开发」在adminx中指定的用户身份用户可编辑的通用方法 「Django 功能开发」基于后端API接口配合JWT用户验证的配置和使用方法 「Django 功能开发」在adminx实现一、二级列表的联动通用方法
服务部署
在 Centos7.x 上快速搭建 Python 环境最简流程 在 Centos7.x 上快速搭建 MySQL 5.7 及错误处理 在 Centos7.x 上快速搭建 MongoDB 3.4及用户设置 在 Centos7.x 上处理 Django 3.x 中 sqlite3 安装、升级、使用、错误处理 在 Centos7.x 上快速搭建 Django+Nginx+Uwsgi 服务流程总结 解决 Xadmin 和 DjangoUeditor 在Django 3.x 环境中不匹配的解决方案
系统维护
快速清理Django服务端缓存的简单方法
问题汇总
Django Rest Framework Bug问题汇总
|