作者:爱编程的小贤
⛳知识点: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
一个 面向对象 的映射器,用作数据模型(以 Python 类的形式定义)和关系型数据库间的介质;
一个基于正则表达式的 URL 分发器;
一个视图系统,用于处理请求;
一个模板系统。
(其中核心框架中还包括
(Django 包含了很多应用在它的 contrib 包中,这些包括:
- 完美的文档,Django近乎完美的官方文档。
- 强大的URL路由配置,Django让你可以设计出非常优雅的URL。
- 自助管理后台,让你几乎不用写一行代码就拥有一个完整的后台管理界面。
- 全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的。
- 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几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。
MVC即 Model-View-Controller(模型-视图-控制器) ,是经典的软件开发设计模式。
- Model (模型):简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。
- View (视图): 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?当然是数据库啦。那么用户输入的数据给谁?
当然是给控制器啦。- Controller(控制器):应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)。
如果把MVC看成一个美女的话,那么着装打扮与外貌(View)就是绅士们能够直接看到的;Controller就是大脑控制与人们的交往方式;核心就是美女的心灵(模型、人设),所谓心灵美才是真的美。
MVC最大的优点是实现了软件或网络应用开发过程中数据、业务逻辑和用户界面的分离,使软件开发更清晰,也是维护变得更容易。这与静态网页设计中使用html和css实现了内容和样式的分离是同一个道理。
Django的MVT设计模式由Model(模型), View(视图)和Template(模板)三部分组成,分别对应单个app目录下的models.py,views.py和templates文件夹。它们看似与MVC设计模式不太一致,其实本质是相同的。Django的MVT设计模式与经典的MVC对应关系如下。
Django MVT设计模式中最重要的是视图(view), 因为它同时与模型(model)和模板(templates)进行交互。当用户发来一个请求(request)时,Django会对请求头信息进行解析,解析出用户需要访问的url地址,然后根据路由urls.py中的定义的对应关系把请求转发到相应的视图处理。视图会从数据库读取需要的数据,指定渲染模板,最后返回响应数据。
mac、windows、linux三种主流操作系统都是支持的,根据自己的喜好进行选择,主推linux
原因:windows和linux编码上有差异,并且有很多库是不支持windows的或者兼容性不如linux。linux是免费试用和自由传播的类Unix操作系统,而mac是一个基于UNIX核心的系统,二者比较相似,bug相对windows更少。
- 使用虚拟机安装linux
- 云服务器使用
- 双系统安装
- Python:Django基于Python开发的web框架,不同版本的Django依赖的python环境可能是不一样的,例如Django2就不支持Python3.7以上(不包括)的版本中进行开发,Django3则能在Python3.6(包括)以上的环境中进行开发。我们使用Django版本为3.1.7,如有3.6以下Python的请更新Python环境。
- pip:包管理工具。
- virtualenv:Python专属虚拟环境,用于保持一个干净的环境。
- mysql:常用的关系型数据库。
为什么要使用虚拟环境?
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如flask、Scrapy等,但是每个项目使用的库并不一样,或者使用到的框架版本不一样,这样在我们更换项目时就需要去对相应库进行更新卸载,如果直接对我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也是很不方便。
虚拟环境:
虚拟环境的特点:干净,环境与环境之间是相互独立
爬虫项目放在虚拟环境1中
django项目放在虚拟环境2中
环境1中的包在环境2中不能使用,同理环境2中的包在环境1中也无法使用
问题:
如果将所有的项目都依赖于一个环境去运行?
答:会造成环境比较乱,并且不同的项目使用到的包的版本可能不同,那么就会造成环境冲突的问题最好就是一个项目使用一个虚拟环境
用于虚拟环境管理
pip install virtualenvwrapper-win
mkvirtualenv xxx
mkvirtualenv --python =path xxx
C:\Users\<Username>\Envs
添加环境变量
WORKON_HOME XXX
workon
lsvirtualenv -b
workon xxx
deactivate.bat
rmvirtualenv xxx
vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
source /home/<username>/.local/bin/virtualenvwrapper.sh
# 配置完成保存后执行
source ~/.bashrc
sudo apt-get install python-virtualenv
sudo yum install python-virtualenv
virtualenv xxx
cd xxxx/bin
source activate
deactivate
virtualenv -p /path/xxx/python3 xxx
workon
lsvirtualenv -b
workon xxx
deactivate
rmvirtualenv xxx
pip install django==3.1.7
创建名为xxx的项目:
django-admin startproject xxx
创建完一个项目会出现这些东西(后面讲)
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 包。
右键点击
应用名添加上
从终端启动:
Python manage.py runserver
这样子第一个项目就启动成功啦!!!!
本文到这里就结束啦,如果有帮到你欢迎给个三连支持一下哦❤️ ❤️ ❤️
如果有哪些需要修改的地方欢迎指正啦!!!一起加油