Django 框架基础
Python web框架
本质
收发socket消息 --> 按照HTTP协议消息格式去解析消息 路径和要执行的函数的对应关系 --> 主要的业务逻辑 字符串替换 --> 模板(特殊符号 --> 数据)一个完整得请求流程:
0. 启动服务端,等待客户端(用户的浏览器)来连接
1. 在浏览器地址栏输入URL,与服务端建立连接,浏览器发送请求
2. 服务端收到请求消息,解析请求消息,根据路径和函数的对应关系,找到将要执行的函数
3. 执行函数,打开HTML文件,进行字符串替换,得到一个最终要返回的HTML内容
4. 按照HTTP协议的消息格式要求,把HTML内容回复给用户浏览器(发送响应)
5. 浏览器收到响应的消息之后,按照HTML的规则渲染页面
6. 关闭连接
socket服务端功能划分:
a. 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... b. 根据用户访问不同的路径执行不同的函数 c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)Python中 Web框架的分类:
按上面三个功能划分:
1. 框架自带a,b,c --> Tornado2. 框架自带b和c,使用第三方的a --> Django
3. 框架自带b,使用第三方的a和c --> Flask
按另一个维度来划分:
1. Django --> 大而全(你做一个网站能用到的它都有)
2. 其他 --> Flask 轻量级
Django框架
Django框架模式
MVC:
模型(Model)
视图(View)
控制器(Controller)
具有耦合性低、重用性高、生命周期成本低等优点。
Django的MTV模式
- Model(模型): 负责业务对象与数据库的对象(ORM)
- Template(模版): 负责如何把页面展示给用户
- View(视图): 负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个 urls 分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
图示

新建Django项目
Django安装
pip3 install django==1.11.11
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ django==1.11.11PyCharm安装的时候:
注意不要勾选那个选项 ,否则会默认安装最新版本,可以右下角选择版本
Django项目的启动
命令行创建项目
django-admin.py startproject 项目名pycharm 创建项目
File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe
可选创建 自定义名字的一个APP
PyCharm启动
点绿色的小三角,直接可以启动Django项目 (前提是小三角左边是你的Django项目名)
命令行启动
在项目的根目录下(也就是有manage.py的那个目录),运行:
python3 manage.py runserver IP:端口 --> 在指定的IP和端口启动
python3 manage.py runserver 端口 --> 在指定的端口启动
python3 manage.py runserver --> 默认在本机的8000端口启动
Django 项目的重要组成文件
项目/项目名/settings.py 文件
存放项目配置的参数文件
项目/项目名/urls.py 文件
保存业务的逻辑与路径的对应关系
项目/static 文件夹
存放静态文件的文件夹,如css,js,图片等
静态文件夹为手动创建,因此需要在 setting.py 中添加此代码
# 静态文件保存目录的别名
STATIC_URL = '/static/' # 所有静态文件(css/js/图片)都放在我下面你配置的文件夹中
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
项目/templates文件夹
保存页面展示文件存放目录
项目/APP 文件夹
分支项目下的应用,方便我们在一个大的Django项目中,管理实现不同的业务功能.
project --> 项目
APP --> 应用
创建APP的命令
命令行,在Django项目的根目录输入:
python3 manage.py startapp app名字创建APP后需要在 setting.py 的 INSTALLED_APPS 中加入一行新的
’app名字.apps.App名字Config’项目/APP名/models.py 文件
创建数据库使用便捷的ORM方式,保存的数据库表现在 models.py 中
项目/APP名/views.py 文件
保存业务的主要逻辑实现功能代码
ORM介绍及使用准备
优势
优点:
简单,不用自己写SQL语句
开发效率高
缺点:
记忆你ROM特殊的语法
相对于大神些的SQL语句,执行效率有差距
ORM的对应关系
类 ---> 数据表
对象 ---> 数据行
属性 ---> 字段ORM能做的事儿
操作数据表 --> 创建表/删除表/修改表
操作数据行 --> 数据的增删改查
ORM做不到的事
不能创建数据库,自己动手创建数据库
使用Django的ORM详细步骤
1 . 自己动手创建数据库
create database 数据库名;2 . 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
# 数据库相关的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 连接的数据库类型
'HOST': '127.0.0.1', # 连接数据库的地址
'PORT': 3306, # 端口
'NAME': "day61", # 数据库名称
'USER': 'root', # 用户
'PASSWORD': '123456' # 密码
}
}3 . 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
在项目/__init__.py文件中,写下面两句
import pymysql
# 告诉Django用pymysql来代替默认的MySQLdb
pymysql.install_as_MySQLdb()4 . 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class 类名(models.Model):
...
创建后命令的执行数据库的创建和修改都需要执行两个命令
python3 manage.py makemigrations # 创建执行命令
python3 manage.py migrate # 上传执行命令
Django 框架基础的更多相关文章
- Django框架——基础之视图系统(View.py)
Django框架之View.py(视图文件) 1. 视图简介 视图层是Django处理请求的核心代码层,我们大多数Python代码都集中在这一层面. 它对外接收用户请求,对内调度模型层和模版层,统合数 ...
- Django框架基础之Form组件
服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能: 1 验证(显示错误信息) 2 保留用户上次输入 ...
- Django框架基础知识01-配置环境
Django框架 Django是个怎样的东西呢? Web应用框架----Django http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理. Web应用框架处理完以后再发送给htt ...
- Django框架基础知识08-表关联对象及多表查询
1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义,int类型,自增长 一般不自定义主键. 2.order_by asc desc from djan ...
- Django框架——基础之路由系统(urls.py)
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架——基础之路由系统(urls.py)11111111
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架——基础教程(总)
1. Django简介 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架 ...
- django框架基础-框架介绍-长期维护
############### MVC架构介绍 ################ # MVC架构 # 一个软件框架有很多的模块,每一个模块有不同的功能 # 模块与模块之间相互配合来完成软件 ...
- django框架基础
所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 最简单的web框架 import socket sk = socke ...
随机推荐
- JS最简单的字符串转数字类型
以前无休止的写parseInt,特别复杂,现在只需要一个加号,就可以完成对字符串的转换 1 === +"1" amazing!
- 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了. 我们可以简单的实例化一个WP ...
- C# 动态生成word文档
本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-->管理NuGet程序包 ...
- linux Page cache和buffer cache正解
Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有一个统一和正确的结论,在我工作的这一段时 ...
- Golang 学习权威网站
Golang 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Golang 是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...
- Mockito单元测试
Mockito简介 Mockito是一个单元测试框架,需要Junit的支持.在我们的项目中,都存在相当多的依赖关系,当我们在测试某一个业务相关的接口或则方法时,绝大多数时候是没有办法或则很难去添加所有 ...
- flex布局justify-content属性和align-items属性设置
前言: flex最常用的就是justify-content和align-items了,这里把这两个属性介绍下,大家更多关于flex布局可以查看阮一峰的日志,写的非常清楚! 阮一峰flex布局的日志:h ...
- 网络二十四题 之 P2756 飞行员配对方案问题
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- [LeetCode] 8. 字符串转换整数 (atoi)
题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- PHP处理XML文档,没有CDATA部分数据处理
在博客备份时,导出了所有文章,导出是xml文档,文章内容在CDATA部分. 这里介绍下XML中CDATA: 所有 XML 文档中的文本均会被解析器解析.只有 CDATA 区段(CDATA sectio ...