【python】Django系列Day01--初识Django_初识django00 01 01

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:xhs1999xhs (备注Java)
img

正文

🙋作者:爱编程的小贤
⛳知识点: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

在这里插入图片描述

在这里插入图片描述

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

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

资料整理不易,点个关注再走吧

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:xhs1999xhs (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
笔试题

  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

[外链图片转存中…(img-WeQqtgVB-1713684953069)]

资料整理不易,点个关注再走吧

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:xhs1999xhs (备注Java)
[外链图片转存中…(img-c2F7x9cr-1713684953070)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值