0


Day01--初识Django

🙋作者:爱编程的小贤
⛳知识点:Django入门
🥇:每天学一点,早日成大佬

文章目录

👊 前言

💎 💎 💎今天我们就要进入Django的学习啦!!!
🚀 🚀 🚀 如果你看完感觉对你有帮助,,,欢迎给个三连哦💗!!!您的支持是我创作的动力。🌹 🌹 🌹 🌹 🌹 🌹 感谢感谢!!!😘😘😘

Django是什么?
一个基于Python语言开发的web框架可以用于快速搭建高性能,优雅的网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模板T。
Django框架存在的意义?

  1. 帮助开发人员快速搭建出一个高性能的,优雅的网站
  2. 免去在不同的web应用中的相同的代码部分的重复编写,只用关心web应用核心的业务逻辑实现
    Django前景
    在Python中,与web开发相关的包有13045个,其中django就占了9091个,约70%。同时,Python中活跃的web框架多达54,其中最活跃的包括Django,flask,pyramid等。Django便是其中的佼佼者,截至目前,已经有超过5200个中大型网站使用Django开发。
    比较知名的使用Django的公司:
    国内:豆瓣、知乎
    国外:Instagram

🌹一、Django基本介绍

1.1 架构分析

img

1.2 组成部分

1.2.1 Django框架的核心

  • 一个 面向对象 的映射器,用作数据模型(以 Python 类的形式定义)和关系型数据库间的介质;
  • 一个基于正则表达式的 URL 分发器;
  • 一个视图系统,用于处理请求;
  • 一个模板系统。(其中核心框架中还包括- 一个轻量级的、独立的 Web 服务器,用于开发和测试。- 一个表单序列化及验证系统,用于 HTML 表单和适于数据库存储的数据之间的转换。- 一个缓存框架,并有几种缓存方式可供选择。- 中间件支持,允许对请求处理的各个阶段进行干涉。- 内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。- 一个序列化系统,能够生成或读取采用 XML 或 JSON 表示的 Django 模型实例。- 一个用于扩展模板引擎的能力的系统。)(Django 包含了很多应用在它的 contrib 包中,这些包括:- 一个可扩展的认证系统- 动态站点管理页面- 一组产生 RSS 和 Atom 的工具- 一个灵活的评论系统- 产生 Google 站点地图(Google Sitemaps)的工具- 防止跨站请求伪造(cross-site request forgery)的工具- 一套支持轻量级标记语言(Textile 和 Markdown)的模板库- 一套协助创建地理信息系统(GIS)的基础框架)

1.3 优点

- 完美的文档,Django近乎完美的官方文档。
- 强大的URL路由配置,Django让你可以设计出非常优雅的URL。
- 自助管理后台,让你几乎不用写一行代码就拥有一个完整的后台管理界面。
- 全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的。

1.4 缺点

- Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter。
- URL配置虽然强大,但全部要手写,高手和初识Django的人配出来的URL会有很大差异。
- 自带的ORM远不如SQLAlchemy强大,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。
- Django的auth跟其它模块结合紧密,功能也挺强,但做的有点过了,用户的数据库schema都给你定好了,比如很多网站要求email地址唯一,可schema里这个字段的值不是唯一的。
- 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如说的ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。

1.5 MVC模式与MVT模式

1.5.1 MVC设计模式

MVC即 Model-View-Controller(模型-视图-控制器) ,是经典的软件开发设计模式。

  • **Model (模型)**:简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。
  • **View (视图)**: 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?当然是数据库啦。那么用户输入的数据给谁? 当然是给控制器啦。
  • **Controller(控制器)**:应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)。

如果把MVC看成一个美女的话,那么着装打扮与外貌(View)就是绅士们能够直接看到的;Controller就是大脑控制与人们的交往方式;核心就是美女的心灵(模型、人设),所谓心灵美才是真的美。

MVC最大的优点是实现了软件或网络应用开发过程中数据、业务逻辑和用户界面的分离,使软件开发更清晰,也是维护变得更容易。这与静态网页设计中使用html和css实现了内容和样式的分离是同一个道理。

1.5.2 MVT设计模式

Django的MVT设计模式由Model(模型), View(视图)和Template(模板)三部分组成,分别对应单个app目录下的models.py,views.py和templates文件夹。它们看似与MVC设计模式不太一致,其实本质是相同的。Django的MVT设计模式与经典的MVC对应关系如下。

  • Django Model(模型): 这个与经典MVC模式下的模型Model差不多。
  • Django View(视图): 这个与MVC下的控制器Controller更像。视图不仅负责根据用户请求从数据库读取数据、指定向用户展示数据的方式(网页或json数据), 还可以指定渲染模板并处理用户提交的数据。
  • Django Template(模板): 这个与经典MVC模式下的视图View一致。模板用来呈现Django view传来的数据,也决定了用户界面的外观。Template里面也包含了表单,可以用来搜集用户的输入内容。

Django MVT设计模式中最重要的是视图(view), 因为它同时与模型(model)和模板(templates)进行交互。当用户发来一个请求(request)时,Django会对请求头信息进行解析,解析出用户需要访问的url地址,然后根据路由urls.py中的定义的对应关系把请求转发到相应的视图处理。视图会从数据库读取需要的数据,指定渲染模板,最后返回响应数据。

🌹二、开发环境介绍

2.1 系统支持

mac、windows、linux三种主流操作系统都是支持的,根据自己的喜好进行选择,主推linux

 原因:windows和linux编码上有差异,并且有很多库是不支持windows的或者兼容性不如linux。linux是免费试用和自由传播的类Unix操作系统,而mac是一个基于UNIX核心的系统,二者比较相似,bug相对windows更少。

2.2 linux系统

- 使用虚拟机安装linux
- 云服务器使用
- 双系统安装

2.3 开发环境支持

  • Python:Django基于Python开发的web框架,不同版本的Django依赖的python环境可能是不一样的,例如Django2就不支持Python3.7以上(不包括)的版本中进行开发,Django3则能在Python3.6(包括)以上的环境中进行开发。我们使用Django版本为3.1.7,如有3.6以下Python的请更新Python环境。
  • pip:包管理工具。
  • virtualenv:Python专属虚拟环境,用于保持一个干净的环境。
  • mysql:常用的关系型数据库。

🌹三、虚拟环境创建(使用wrapper进行管理)

为什么要使用虚拟环境?

在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如flask、Scrapy等,但是每个项目使用的库并不一样,或者使用到的框架版本不一样,这样在我们更换项目时就需要去对相应库进行更新卸载,如果直接对我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也是很不方便。

虚拟环境:
虚拟环境的特点:干净,环境与环境之间是相互独立
爬虫项目放在虚拟环境1中
django项目放在虚拟环境2中
环境1中的包在环境2中不能使用,同理环境2中的包在环境1中也无法使用
问题:
如果将所有的项目都依赖于一个环境去运行?
答:会造成环境比较乱,并且不同的项目使用到的包的版本可能不同,那么就会造成环境冲突的问题最好就是一个项目使用一个虚拟环境

(一)windows中的虚拟环境管理

1. 安装wrapper工具:

用于虚拟环境管理

pip install virtualenvwrapper-win

2. 创建虚拟环境

mkvirtualenv xxx

在这里插入图片描述

3. 指定使用Python版本创建虚拟环境

mkvirtualenv --python =path xxx

4. 创建的虚拟环境存放目录(默认)

C:\Users\<Username>\Envs

在这里插入图片描述

5. 修改默认存放路径

添加环境变量
WORKON_HOME XXX

6. 查看所有虚拟环境

workon 
lsvirtualenv -b

在这里插入图片描述

7. 进入/退出/删除虚拟环境

workon xxx

deactivate.bat

rmvirtualenv xxx

在这里插入图片描述

在这里插入图片描述

(二)Linux中的虚拟环境管理

1.修改环境变量配置文件如下

vim ~/.bashrc
    export WORKON_HOME=$HOME/.virtualenvs

    source /home/<username>/.local/bin/virtualenvwrapper.sh

# 配置完成保存后执行
source ~/.bashrc

2. Linux下的Python虚拟环境创建

(1)下载工具
sudo apt-get install python-virtualenv

sudo yum install python-virtualenv
(2)创建虚拟环境目录
virtualenv xxx
(3)使用虚拟环境
cd xxxx/bin
source activate
(4)退出虚拟环境
deactivate
(5)指定使用Python版本创建虚拟环境
virtualenv   -p /path/xxx/python3 xxx

(三)wrapper管理虚拟环境的其他操作

1.查看

workon
lsvirtualenv -b

2.进入/退出/删除

workon xxx

deactivate

rmvirtualenv xxx

🌹四、Django项目创建与服务启动

1.安装Django

pip install django==3.1.7

在这里插入图片描述

2.第一个django项目

创建名为xxx的项目:

django-admin startproject xxx

创建完一个项目会出现这些东西(后面讲)

在这里插入图片描述

3.创建子应用:

cd xxx   //项目根目录
python manage.py startapp xxx

在这里插入图片描述

 - admin.py 用于将 Model 定义的数据表注册到管理后台,是 Django Admin 应用的配置文件; 
 - apps.py用于应用程序本身的属性配置文件
 - models.py 用于定义应用中所需要的数据表;
 -  tests.py文件用于编写当前应用程序的单元测试; 
 - views.py 用来定义视图处理函数的文件; 
 - 一级目录下的 __init__.py 文件标识
 - migrations 目录用于存储数据库迁移时生成的文件,该目录下的 __init__.py
   文件标识 migrations 是一个 Python 包。

4.将项目文件夹标记为根目录,为了让编辑器能够识别

右键点击

在这里插入图片描述

5.注册应用

应用名添加上

在这里插入图片描述

6.启动服务

从终端启动:

Python manage.py runserver

在这里插入图片描述

在这里插入图片描述

这样子第一个项目就启动成功啦!!!!👍👍👍
本文到这里就结束啦,如果有帮到你欢迎给个三连支持一下哦❤️ ❤️ ❤️
如果有哪些需要修改的地方欢迎指正啦!!!一起加油👏👏👏

标签: django

本文转载自: https://blog.csdn.net/weixin_53000329/article/details/124482229
版权归原作者 爱编程的小贤 所有, 如有侵权,请联系我们删除。

“Day01--初识Django”的评论:

还没有评论