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         --> Tornado

  2. 框架自带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.11

PyCharm安装的时候: 

注意不要勾选那个选项 ,否则会默认安装最新版本,可以右下角选择版本

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 框架基础的更多相关文章

  1. Django框架——基础之视图系统(View.py)

    Django框架之View.py(视图文件) 1. 视图简介 视图层是Django处理请求的核心代码层,我们大多数Python代码都集中在这一层面. 它对外接收用户请求,对内调度模型层和模版层,统合数 ...

  2. Django框架基础之Form组件

    服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能:       1 验证(显示错误信息)       2 保留用户上次输入 ...

  3. Django框架基础知识01-配置环境

    Django框架 Django是个怎样的东西呢? Web应用框架----Django  http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理. Web应用框架处理完以后再发送给htt ...

  4. Django框架基础知识08-表关联对象及多表查询

    1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义,int类型,自增长 一般不自定义主键. 2.order_by asc desc from djan ...

  5. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  6. Django框架——基础之路由系统(urls.py)11111111

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  7. Django框架——基础教程(总)

    1. Django简介 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架 ...

  8. django框架基础-框架介绍-长期维护

    ###############    MVC架构介绍    ################ # MVC架构 # 一个软件框架有很多的模块,每一个模块有不同的功能 # 模块与模块之间相互配合来完成软件 ...

  9. django框架基础

    所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 最简单的web框架 import socket sk = socke ...

随机推荐

  1. Spring Boot应用总结更新

    一.SpringBoot的产生背景: SpringBoot的产生背景伴随着微服务,微服务的相关概念参考上一篇的博客,分布式架构理论: 微服务的宏观概念理解: 将一个大应用拆分成多个小应用,一个小应用是 ...

  2. Javascript数组系列五之增删改和强大的 splice()

    今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我 ...

  3. macos 常用快捷键及操作

    通用: 拷贝相当于window下的复制非苹果键盘(command == win option == alt control == ctrl)Command + C 拷贝(Copy)Command + ...

  4. InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.解决办法

    最近使用requests进行get请求的时候,控制台输出如下错误. InsecureRequestWarning: Unverified HTTPS request is being made. Ad ...

  5. AD域安装及必要设置

    本文主要介绍AD域的安装和程序开发必要的设置.   一.安装AD域 运行dcpromo命令,安装AD域. 步骤:     1.win+R     2.dcpromo 图例:           百度百 ...

  6. sklearn使用——梯度下降及逻辑回归

    一:梯度下降: 梯度下降本质上是对极小值的无限逼近.先求得梯度,再取其反方向,以定步长在此方向上走一步,下次计算则从此点开始,一步步接近极小值.需要注意的是步长的取值,如果过小,则需要多次迭代,耗费大 ...

  7. LeetCode算法题-Poor Pigs(Java实现)

    这是悦乐书的第235次更新,第248篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第102题(顺位题号是455).有1000个水桶,其中只有一个水桶含有毒药,其余的都没毒 ...

  8. 我的第一个python web开发框架(35)——权限数据库结构设计

    接下来要做的是权限系统的数据库结构设计,在上一章我们了解了权限系统是通过什么来管理好权限的,我们选用其中比较常用的权限系统来实现当前项目管理要求. 下面是我们选择的权限系统关系模型: 从以上关系可以看 ...

  9. 【Python 02】计算机与程序设计

    计算机 根据一系列指令对数据进行处理的工具或机器. 特征: 可以进行计算 根据指令执行任务 组成: 运算器+控制器(CPU) 存储器(内存及硬盘):内存存储临时数据.硬盘存储相对永久的数据 输入设备和 ...

  10. typescript 学习笔记

    错的写法 枚举 错误写法 方法可选参 类 子类没有找父类