Django 学习教程-介绍与安装

系列

Django 学习教程- Hello world入门案例-CSDN博客

介绍

Django 是一个由 Python 编写用于Web 应用程序开发的高级 Python Web 框架

Django 提供了一套强大的工具(无需重新发明轮子),使得开发者能够快速构建 Web 网站。

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

谁适合阅读本教程?

学习本教程前你需要了解一些基础的 Web 知识和Python基础。

Python学习教程:Python从入门到精通学习教程

特点

  • ORM(对象关系映射): Django 提供了一个强大的 ORM,允许开发者通过 Python 代码来定义和操作数据库模型,而无需直接使用 SQL。这使得数据库操作更加抽象和易于管理。

  • MVC 架构: Django 遵循 MVC(模型-视图-控制器)的软件设计模式,但它使用了稍微不同的术语。在 Django 中,模型(Model)表示数据结构,视图(View)负责呈现用户界面,而控制器(Controller)的职责被称为视图(View)。

  • 模板引擎: Django 使用模板引擎来生成 HTML,这使得前端和后端的代码分离更加容易。Django 的模板语言允许开发者在模板中嵌入动态内容。

  • 自动化 admin 界面: Django 自动生成管理后台,使得管理和操作数据库的过程变得非常简单。开发者可以轻松地创建、修改和删除数据库记录,而无需编写自定义的管理界面。

  • 表单处理: Django 提供了强大的表单处理工具,使得用户输入的验证和处理变得更加简单。这对于开发 Web 表单和处理用户提交的数据非常有用。

  • 安全性: Django 内置了一些安全性功能,例如防止常见的 Web 攻击(如 CSRF 攻击),并提供了方便的用户身份验证和授权系统。

  • 可扩展性: Django 的组件是松耦合的,允许开发者使用现有的组件或编写自己的应用程序来扩展框架功能。

  • 社区支持: Django 拥有庞大的社区支持,提供了大量的文档、教程和第三方包,使得学习和使用 Django 变得更加容易。

MTV 模型

Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:

  • M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
  • T 表示模板 (Template):负责如何把页面(html)展示给用户。
  • V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。

除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template,MTV 的响应模式如下所示:

用户操作流程图

解析:

用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:

  • a.如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户。
  • b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。

视图函数把返回的数据填充到模板中空格,最后返回网页给用户。

安装 Django

在安装 Django 前,系统需要已经安装了 Python 的开发环境。

如果你还没有安装 Python,请先从 Python 官网Download Python | Python.org下载并安装最新版本的 Python。

Python安装教程:Python从入门到精通之安装与快速入门-CSDN博客

Django 安装也很简单包管理工具 pip 就可以了:

复制代码
pip install django -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

验证是否安装成功,显示django版本号表示安装成功:

复制代码
python -m django --version

如果一切顺利,你将看到安装的 Django 版本号,如:5.0

相关推荐
起个破名想半天了24 分钟前
Sklearn入门之datasets的基本用法
人工智能·python·机器学习·sklearn
东阳马生架构24 分钟前
Sentinel源码—1.使用演示和简介
后端
大雄野比32 分钟前
【scikit-learn基础】--『监督学习』之 岭回归
学习·回归·scikit-learn
大雄野比32 分钟前
【scikit-learn基础】--『预处理』之 缺失值处理
python·机器学习·scikit-learn
FAREWELL0007537 分钟前
C#进阶学习(一)简单数据结构类之ArrayList、Stack、Queue、Hashtable
数据结构·学习·c#·queue·arraylist·stack·hash table
zhuyasen1 小时前
首个与AI深度融合的Go开发框架sponge,解决Cursor/Trae等工具项目级开发痛点
后端·低代码·go
春生野草1 小时前
0413-多态、Object类方法、访问权限修饰符、装箱拆箱、128陷阱
java·开发语言
烁3471 小时前
每日一题(小白)暴力娱乐篇26
java·开发语言·算法·娱乐
周周记笔记1 小时前
探索R语言:在线学习资源汇总
开发语言·r语言
小鑫仔_x1 小时前
selenium之Token
python·selenium·测试工具