Django初学者指南

文章目录

  • Django初学者指南
    • 1 Django简介
      • 1.1 Django的历史
      • 1.2 使用Django的知名网站
      • 1.4 Django的主要特点
      • 1.5 Django的工作原理
    • 2 Django 使用
      • 2.1 Django 支持的 Python 版本
      • 2.2 Django 版本
    • 3 Django 开发 Web 程序
      • 3.1 安装Django
      • 3.2 创建Django项目
      • 3.3 运行开发服务器
      • 3.4 创建Django应用
    • 小结


Django初学者指南

在这里插入图片描述

欢迎进入Django的世界!如果你对开发数据库驱动的网站感兴趣,Django是一个非常有用的框架。在这篇博文中,我们将介绍Django的基础知识,包括它的历史、特点、如何开始学习,以及一些使用Django的知名网站。

1 Django简介

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。

Django 提供了一套强大的工具和约定,处理了Web开发中的许多繁琐事务,使得开发者可以专注于编写网站独特的业务逻辑部分,快速构建功能齐全且易于维护的网站。

Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。

Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。

1.1 Django的历史

Django诞生于2003年,最初是为了满足新闻网站的需求而开发的。
2005年7月21日,Django被公开发布,并在BSD许可证下提供。
如今,Django已经发展成为一个由全球社区支持的成熟框架。

Django框架的历史始于2003年秋,当时位于劳伦斯《日报世界》报社的网络程序员Adrian Holovaty和Simon Willison开始使用Python构建应用程序。在Django开发的早期,Jacob Kaplan-Moss被聘请加入,这是在Simon Willison的实习结束前不久。

Django最初是为了满足新闻网站的需求而开发的,它的目标是简化复杂、数据库驱动网站的创建。Django强调组件的可重用性和“插件化”,以及少量代码、低耦合、快速开发和不重复自己(DRY)的原则。

2005年7月21日,Django被公开发布,并在BSD许可证下提供。框架的命名是为了纪念吉他手Django Reinhardt,Adrian Holovaty是一位罗姆人爵士吉他演奏者,他的音乐部分地启发了Reinhardt。

到了2008年6月,宣布新成立的Django软件基金会(DSF)将在未来维护Django。DSF是在美国成立的一个独立组织,是一个501©(3)非营利组织。

如今,Django已经发展成为一个由全球社区支持的成熟框架,它的最新稳定版本是5.0.6,于2024年5月7日发布1。Django继续是许多开发者和公司构建现代Web应用程序的首选框架。

1.2 使用Django的知名网站

国外网站:

  • Instagram:一个流行的社交媒体平台,专注于图片和视频的分享。
  • Pinterest:一个允许用户发现新想法和灵感的平台。
  • Disqus:一个广泛使用的博客评论托管服务。
  • Mozilla:火狐浏览器的帮助页面。
  • NASA:美国国家航空航天局官方网站的某些部分是由Django开发的。
  • The Washington Post:一家有影响力的新闻机构,其网站使用Django来处理大量的视图和流量。

国内网站:

  • 豆瓣:一个提供电影、书籍、音乐等文化商品综合信息、用户评论及推荐服务的网站。
  • 知乎:一个中文问答网站,用户可以在上面提出问题、分享知识、经验和见解。

这些网站的成功运营证明了Django作为一个Web框架的可靠性和高效性。
Django的设计哲学、安全性和快速开发的特点使其成为许多开发者和公司的首选框架。

1.4 Django的主要特点

  • 完整性:提供几乎所有开发者可能想要的功能“开箱即用”。

  • 多功能性:Django可以(也已经)被用来构建几乎任何类型的网站。

  • 安全性:Django对待安全问题的态度:致力于帮助开发者避免常见的安全错误,提供一个旨在自动保护网站的框架。

  • 快速开发:Django旨在帮助开发者从概念到完成尽可能快地开发应用程序。

  • 可扩展性:适用于流量最繁忙的网站。

  • DRY原则:强调组件的可重用性,遵循不要重复自己的原则。

Django 处理了Web开发中的许多繁琐事务,比如: 用户认证、数据库连接、CRUD(创建、读取、更新、删除)操作、URL路由、表单处理和安全性等,这样开发者就可以专注于编写使网站独特的业务逻辑部分,而不需要重新发明轮子。

Django遵循“包含电池”的理念,提供了几乎所有开发者可能想要的功能“开箱即用”。因为你需要的一切都是框架的一部分,所以它们可以无缝协同工作,遵循一致的设计原则,并且拥有广泛且最新的官方文档。

1.5 Django的工作原理

Django遵循MVT(模型-视图-模板)架构:

  • 模型(Model):定义程序的数据结构。即开发者想要展示的数据,通常是来自数据库的数据。
  • 视图(View):处理HTTP请求,从模型中获取数据,传递给模板。它是一个处理HTTP请求的函数或方法,它导入相关的模型,并决定发送哪些数据到模板,然后返回最终结果。
  • 模板(Template):定义如何显示数据。它是一个描述结果应该如何表示的文件。模板通常是HTML文件,包含网页布局,以及如何显示数据的逻辑。

如果你对创建数据库驱动的网站感兴趣,Django是一个非常有用的框架。
它的ORM(对象关系映射)技术使得与数据库的交流变得更加简单,无需编写复杂的SQL语句。Django还强调组件的可重用性,遵循DRY(不要重复自己)的原则。

2 Django 使用

确定你要使用的 Django 版本。

Django 是 BSD 许可 下的开源版本。建议使用最新版本的 Python 3.x 。

2.1 Django 支持的 Python 版本

因为新版本的 Python 通常会更快,拥有更多特性,而且有更好的支持,推荐使用 Python 3 的最新版本。

使用旧版本的 Django 不会损失任何东西,但你不能利用新版本的 Python 的改进和优化。

与 Django 一起使用的第三方应用程序可以自由设置自己的版本要求。

Django 版本对应的 Python 版本:

Django 版本Python 版本
1.82.7、3.2(until the end of 2016)、3.3、3.4、3.5
1.9、1.102.7、3.4、3.5
1.112.7、3.4、3.5、3.6、3.7(added in 1.11.17)
2.03.4, 3.5, 3.6, 3.7
2.13.5, 3.6, 3.7
2.23.5、3.6、3.7、3.8 (added in 2.2.8)、3.9 (added in 2.2.17)
3.13.6、3.7、3.8、3.9(added in 3.1.3)
3.23.6、3.7、3.8、3.9、3.10(added in 3.2.9)
4.03.8、3.9、3.10
4.13.8、3.9、3.10、3.11(added in 4.1.3)
4.23.8、3.9、3.10、3.11、3.12(added in 4.2.8)
5.03.10、3.11、3.12
5.13.10、3.11、3.12
5.23.10、3.11、3.12、3.13

2.2 Django 版本

通常情况下,如果在生产环境中使用代码,应该使用稳定版本。

Django 项目大约每八个月发布一个完整的稳定版本,并在其间发布错误修复更新。

这些稳定版本包含我们向后兼容性保证所覆盖的 API;如果你针对稳定版本编写代码,在下一个官方版本发布时升级应该不会有任何问题。

功能版本(AB、A.B+1 等)大约每八个月发布一次。这些版本将包含新功能、对现有功能的改进等。

补丁版本(ABC 等)将根据需要发布,以修复错误和/或安全问题。这些版本将与相关功能版本 100% 兼容,除非出于安全原因或为了防止数据丢失而无法兼容。因此,“我应该升级到最新补丁版本吗?”的答案永远是“是”。

某些功能版本将被指定为长期支持 (LTS) 版本。这些版本将在保证的一段时间内(通常为三年)应用安全和数据丢失修复。

在这里插入图片描述

发布系列最新发布主流支持终止延长支持结束
5.05.0.62024 年 8 月2025 年 4 月
4.2 长期支持版本4.2.132023 年 12 月 4 日2026 年 4 月

未来版本路线图

发布系列发布日期主流支持终止延长支持结束
6.12026 年 8 月2027 年 4 月2027 年 12 月
6.02025 年 12 月2026 年 8 月2027 年 4 月
5.2 长期支持版本2025 年 4 月2025 年 12 月2028 年 4 月
5.12024 年 8 月2025 年 4 月2025 年 12 月

3 Django 开发 Web 程序

开始使用 Django 前你需要了解一些基础的 Web 知识及 Python 基础知识。

  • Python知识点:函数、面向对象。
  • 前端开发:HTML、CSS、JavaScript 。

3.1 安装Django

使用pip安装Django:

pip install django

通过以下命令可以查看已安装的版本:

# python 版本
python -V

# Django 版本
python3 -m django --version

3.2 创建Django项目

创建一个新的Django项目:

django-admin startproject myproject

创建完成后项目的目录结构:

.
|-- myproject
|   |-- __init__.py
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

3.3 运行开发服务器

启动Django的开发服务器:

cd myproject
python manage.py runserver

3.4 创建Django应用

创建一个新的Django应用:

python manage.py startapp myapp

现在整个目录结构如下:

$ tree
.
|-- myproject
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   |-- views.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

接着,理解模型、视图、模板等基本概念后,就可以开始实践构建你的项目了。

小结

Django 处理了Web开发中的许多繁琐事务,比如: 用户认证、数据库连接、CRUD(创建、读取、更新、删除)操作、URL路由、表单处理和安全性等,这样开发者就可以专注于编写使网站独特的业务逻辑部分,而不需要重新发明轮子。

Django 遵循“包含电池”的理念,提供了几乎所有开发者可能想要的功能“开箱即用”。

Django 的ORM(对象关系映射)技术使得与数据库的交流变得更加简单,无需编写复杂的SQL语句。Django还强调组件的可重用性,遵循DRY(不要重复自己)的原则。

Django 是一个强大的框架,适合那些希望快速开发安全、可维护的网站的开发者。如果你对创建数据库驱动的网站感兴趣,Django是一个非常有用的框架。

- END -

本文摘编自《速学Django:Web开发从入门到进阶》,经出版方授权发布。

在这里插入图片描述

推荐语:

为满足广大Python编程学习者的实际需求,本书作者十多年来致力于推动Python编程基础教学,始终专注于产品原型设计、Django前端开发、Python程序设计。
本书是一本适合Django开发快速入门的图书。
本书配合实际操作的案例,清晰明了地讲解了使用Django进行Web项目开发时所涉及的常用知识点,包括框架配置、路由配置、模型、视图、模板、表单、中间件、上下文处理器、代码测试、网站缓存和网站部署等内容。

摘编图书参考:《速学Django:Web开发从入门到进阶》

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/713087.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【纯干货级教程】深度学习根据loss曲线进行分析调参

相信很多刚刚接触目标检测系列算法小伙伴跑深度学习算法时会有许多困惑,比如训练得出的loss曲线有什么意义?训练的一些参数要如何设置选择?选择哪个算法模型作为baseline、选择哪个参数量/复杂度/深度的模型进行训练最为合适? 本…

在VS Code中快速生成Vue模板的技巧

配置vue.json: { "Print to console": {"prefix": "vue","body": ["<template>"," <div class\"\">\n"," </div>","</template>\n","<scri…

如何在WIndows虚拟机安装 macOS 黑苹果系统?

在本教程中&#xff0c;我们将介绍如何在虚拟机上安装 macOS 黑苹果系统。黑苹果系统是非苹果公司官方支持的 macOS 系统的非官方版本&#xff0c;可以在普通 PC 上运行。请注意&#xff0c;安装黑苹果系统可能违反苹果的许可协议&#xff0c;请自行承担风险。参考视频教程&…

Linux之BCC 性能工具的移植和使用

一、bcc 工具 bcc 的全称&#xff1a;BPF Compiler Collection BCC&#xff08;BPF Compiler Collection&#xff09;是一个用于创建高效的内核跟踪和操作程序的工具包&#xff0c;包含了几个有用的工具和示例。它利用了扩展的BPF&#xff08;Berkeley Packet Filters&#x…

欧洲杯赛况@20240615

点击标题下「蓝色微信名」可快速关注 欧洲杯首战&#xff0c;德国5:1狂胜苏格兰&#xff0c;大比分、红点套餐、超新星登场进球&#xff0c;好像这些能想到的元素都发挥了作用&#xff0c;作为东道主&#xff0c;聚集了天时地利人和&#xff0c;可以说是完美&#xff0c;这就是…

记录:利用 Agora 在 Unity3D MRTK场景中创建实时视频聊天应用

目录 准备1. 安装Agora_Unity_RTC_SDK2. 创建UI3. script具体内容4. 使用测试 本质是两部带摄像机的设备同时进入Agora聊天室内视频。 去年实现过一次这个功能&#xff0c;用的是Agora_Unity_RTC_SDK 4.2.2版本的&#xff0c;今年使用失败&#xff0c;遂重新安装最新版本Agora…

docker安装消息队列mq中的rabbit服务

在现代化的分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;已经成为了一种不可或缺的组件。RabbitMQ作为一款高性能、开源的消息队列软件&#xff0c;因其高可用性、可扩展性和易用性而广受欢迎。本文将详细介绍如何在Docker环境中安装RabbitMQ服务…

中文版svn怎么忽略文件

个人需求&#xff1a; 不上传dist&#xff0c;dist.7z&#xff0c;node_modules等文件夹 实际操作&#xff1a; 前言&#xff1a;在上传svn为避免操作失败导致丢失文件的情况&#xff0c;保险起见&#xff0c;先备份代码 1&#xff1a;右键点击 2&#xff1a;点击新建 – 其…

【C++】图1

并查集 template <class T> class UnionFindSet { public:UnionFindSet(size_t n):_ufs(n, -1){}void Union(int x1, int x2){int root1 FindRoot(x1);int root2 FindRoot(x2);if (root1 root2)return;if (root1 > root2)swap(root1, root2);_ufs[root1] _ufs[ro…

uniapp开发微信小程序问题汇总

1. 自定义校验规则validateFunction失效 2. 微信小程序不支持<Br>换行 在 <text></text> 标签中使用\n(必须 text 标签&#xff0c;view 标签无效 ) 3. 微信小程序无法使用本地静态资源图片的解决方法 (1) 将图片上传到服务器&#xff0c;小程序访问该图片…

非对称加密系统解析

目录 1. 概述 2. 非对称加密标准 2.1 RSA 2.2 SM2 2.2.1 SM2私钥 2.2.2 SM2公钥 2.2.3 加密数据格式 2.2.4 签名数据格式 1. 概述 非对称加密中&#xff0c;密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密&#xff0c;接收者用解密密钥对密文进行解密…

Leetcode - 132双周赛

目录 一、3174. 清除数字 二、3175. 找到连续赢 K 场比赛的第一位玩家 三、3176. 求出最长好子序列 I 四、3177. 求出最长好子序列 II 一、3174. 清除数字 本题可以使用栈来模拟&#xff0c;遇到数字弹出栈顶元素&#xff0c;遇到字母入栈。 代码如下&#xff1a; //使用字…

网络编程(二)TCP

一、TCP网络编程 网络编程模型&#xff1a; C/S模型&#xff1a;客户端服务器模型 优点&#xff1a; 客户端可以缓存一些数据&#xff0c;使用时直接在本地读取&#xff0c;无需每次重新下载&#xff1b; 由于客户端和服务器都是自己开发的&#xff0c;可以自定义协议 缺点&a…

基于carsim的线控转向仿真(1)--carsim车辆模型目标角度跟踪

一、Rwa转向执行总成建模 Rwa包括齿轮齿条机构、转向组件以及转向执行电机&#xff1b;如下图&#xff0c;电机输出轴通过齿轮减速增扭后&#xff0c;再经过一个半径为rp的小齿轮&#xff0c;直接带动齿条左右移动。齿条的移动通过转向摇臂&#xff0c;带动车轮转动&#xff0c…

Excel/WPS《超级处理器》功能介绍与安装下载

超级处理器是基于Excel或WPS开发的一款插件&#xff0c;拥有近300个功能&#xff0c;非常简单高效的处理表格数据&#xff0c;安装即可使用。 点击此处&#xff1a;超i处理器安装下载 Excel菜单&#xff0c;显示如下图所示&#xff1a; WPS菜单显示&#xff0c;如下图所示&am…

15. 第十五章 类和对象

15. 类和对象 到现在你已经知道如何使用函数组织代码, 以及如何使用内置类型来组织数据. 下一步将学习面向对象编程, 面向对象编程使用自定义的类型同时组织代码和数据. 面向对象编程是一个很大的话题, 需要好几章来讨论.本章的代码示例可以从↓下载, https://github.com/Alle…

嵌入式实训day3

1、 # 82261773 # y6ufuT9yGQxddpSzSe3zZpbP # BJsEfKFNGOwHtLuKoHsfVIWrGWjXVKut"""1、PC需要联网2、不能使用MicroPython解释器 """ from aip import AipFace import base64# 查看REST-API-SDK if __name__ "__main__":# 设置APP_I…

数字电路中二进制的数据表达

文章目录 1. 二进制数据表达 1.1 二进制简介 1.2 用二进制表达文字 1.2.1 最开始的表达方式 1.2.2 通讯系统的编码和解码 1.2.3 集成电路 1.2.4 ASCII编码 1.2.5 GBK编码 1.2.6 Unicode编码 2. 用二进制表达图像 2.1 图片像素化 2.2 像素数字化 2.3 二值图像 2.4…

C++ 43 之 自增运算符的重载

#include <iostream> #include <string> using namespace std;class MyInt{friend ostream& operator<< (ostream& cout , MyInt& int1); public:MyInt(){this->m_num 0;}// 前置自增&#xff1a; 成员函数实现运算符的重载 返回的是 引用&a…

ARTS Week 32

Algorithm 本周的算法题为 1512. 好数对的数目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1&#xff1a;输入&#xff1a;nums [1,2,3,1,1,3]输出&#xff1a;4解释…