Django目录:https://blog.csdn.net/qq_41106844/article/details/105554082

什么是WEB框架

框架:即framework,特指未解决一个开放性问题而设计的具有一定约束性的支撑框架。使用框架可以用来快速开发特点的系统。

大白话就是,别人搭台,你唱戏。

Web框架(Web framework):是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。

大多数的web框架都提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。

浏览器和服务器的是基于HTTP协议进行通信的,也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率。

为DIV做准备

在div之前,我们要先知道几个概念:

WSGI:全称(Web Server Gateway Interface)。

简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。

如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。

正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。

因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口协议来实现这样的服务器软件,让我们专心用Python编写Web业务。这个接口就是WSGI。

wsgiref模块:就是python基于wsgi协议开发的服务模块。

我们先用wsgiref模块实现一个web应用

# 这样实现web应用与socket最大的区别是:

# 不需要在乎客户端或者服务端之间乱七八糟的连接和传输.

# 只需要在有连接在连接8080端口后返回给他页面数据。

from wsgiref.simple_serverimport make_server

#这两个参数,分别是包含HTTP信息的一个字典,发出HTTP响应的函数。

def application(environ, start_response):

#响应头的设置

start_response('200 OK', [('Content-Type', 'text/html')])

return [b'<h1>Hello, web!</h1>']

httpd = make_server('127.0.0.1', 8080, application)

print('Serving HTTP on port 8080...')

# 开始监听HTTP请求:

httpd.serve_forever()

我们再来看看 make_server这个函数:

第一个参数是IP,第二个参数是端口,第三个参数就直接是app。

如果查看environ

我们能在其中发现很多信息以k-v的形式保存,如果想要获得什么信息,可以从这里拿。

那么我们现在改一下需求,我们现在浏览 http://127.0.0.1/hanx  这个页面时,我们想让他出现  hello hanxuan!

我们这就需要去environ中找到负责管理路径的key。

我们发起 http://127.0.0.1/hanx 这个请求,然后我们想要找到的路径找到了。

from wsgiref.simple_serverimport make_server

def application(environ, start_response):

#获取路径

path=environ["PATH_INFO"]

start_response('200 OK', [('Content-Type', 'text/html')])

#简单处理一下之后拼接

strin="<h1>Hello, "+path[1:]+"!"

#将字符串转换成二进制串

return [bytes(strin,encoding="utf-8")]

httpd = make_server('127.0.0.1', 8080, application)

print('Serving HTTP on port 8080...')

# 开始监听HTTP请求:

httpd.serve_forever()

页面上ok

但是显然这么写有点不符合实际,显然我们的页面数量是有限的,那么我们接下来引用真实的HTML文件作为页面。

之后修改程序为:

from wsgiref.simple_serverimport make_server

def foo1():

f =open("index1.html","rb")

data = f.read()

return data

def foo2():

f =open("index2.html","rb")

data = f.read()

return data

def application(environ, start_response):

#获取路径

path=environ["PATH_INFO"]

start_response('200 OK', [('Content-Type', 'text/html')])

if path =="/HAN":

return [foo1()]

elif path =="/XUAN":

return [foo2()]

else:

return [b"404"]

httpd = make_server('127.0.0.1', 8080, application)

print('Serving HTTP on port 8080...')

# 开始监听HTTP请求:

httpd.serve_forever()

但是如果页面数量过多,我们需要大量的使用if--elif--else。那么有没有方便一点的呢,这就有了我们的路由表。

...

#路由表

def router():

URLpattern = [

("/HAN", foo1),

("/XUAN", foo2)

]

return URLpattern

def application(environ, start_response):

#获取路径

path=environ["PATH_INFO"]

start_response('200 OK', [('Content-Type', 'text/html')])

URLpattern = router()

for iin URLpattern:

if path == i[0]:

func = i[1]

return[func()]

else:

return [b"404"]

...

下面没截到的照旧

web访问照旧。

使用了路由表就可以自由的增加删除页面。

2.8.5Django --3 WEB框架相关推荐

  1. pythonweb框架django_Django企业开发实战 高效Python Web框架指南

    第一部分初入江湖 章需求2 1.1需求文档3 1.2需求评审/分析4 1.2.1博客需求评审5 1.2.2评审之后6 1.3功能分析6 1.3.1需求列表6 1.3.2功能点梳理7 1.3.3模块划分 ...

  2. Django web框架

    Web框架 web 框架本质  -  Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. HTTP协议 HTTP协议介绍HTTP协议对收发消息的格式要求每个HTTP ...

  3. web框架总结(django、flask)

    1.MVC解读 M:Model,模型,和数据库进行交互 V:View,视图,负责产生Html页面 C:Controller,控制器,接收请求,进行处理,与M和V进行交互,返回应答. 1.用户点击注 2 ...

  4. Python Web 框架要点

    1. Web应用程序处理流程 2. Web程序框架的意义 用于搭建Web应用程序 免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现 3. Web应用程序的本质 接收并解析 ...

  5. 带你理清Node.js 的Web框架的3个层次

    web 框架指的是处理 http.https 的服务端框架,Node.js 提供了 http.https 模块用于处理协议数据,这是 web 框架的基础. 但是 http.https 的 api 过于 ...

  6. python学习随笔--web框架

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

  7. python bottle web框架简介

    Bottle 是一个快速,简单,轻量级的 Python WSGI Web 框架.单一文件,只依赖 Python 标准库 .bottle很适合会一点python基础的人使用,因为这框架用起来很简单,只要 ...

  8. Python之路--WEB框架本质

    一.本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8im ...

  9. Python微型Web框架Bottle源码分析

    Bottle 是一个快速,简单和轻量级的 WSGI 微型 Web 框架的 Python.它作为单个文件模块分发,除了 Python 标准库之外没有依赖关系. 选择源码分析的版本是 Release 于 ...

最新文章

  1. Attention Model(注意力模型)思想初探
  2. JQuery元素选择器:和||,逻辑选择
  3. 安卓飞机大战(三) 弹出对话框
  4. 历届试题 连号区间数
  5. grass gis怎么使用_使用GRASS GIS返回学校
  6. 飞书正式发布5.0版 推出飞书人事、合同、审批等多款新产品
  7. 2021-2025年中国电子台秤行业市场供需与战略研究报告
  8. 按照这个步骤来刷题,迷茫的你两个月亦能成为王者
  9. 带你全面掌握高级知识点!java修改map中的value
  10. Linux目录详细说明
  11. Linux启动分析——init进程与app启动(init进程源码分析)
  12. 05_家谱管理系统(小钱版)[数据结构][2012-02-03]
  13. 服务器搬迁清单需要启动任务以及恢复办法
  14. VUE设置浏览器标题及图标
  15. 中国能源建设合并葛洲坝又有最新进展,葛洲坝即将终止上市
  16. 当面试问到自己有哪些缺点应该怎么回答
  17. (三)《数字电子技术基础》——码制
  18. vscode 开启大小写区分
  19. centos7下搭建nextcloud云(使用阿里云轻量服务器+oss对象储存)
  20. 电容电流状态观测器的三相LCL型PWM变流器控制

热门文章

  1. 北京,三看三核对,读懂社保对账单
  2. 一个积分不等式的再讨论
  3. 微信和支付宝相关支付业务场景介绍
  4. Response.WriteFile 无法下载大文件解决方法
  5. Android 常用RGB值及名称
  6. 11.7亿、苹果仅20%、1/4的时间看短视频...关于互联网,你必须知道的几个数字......
  7. 后端技术交流群,邀你加入
  8. android 在状态栏耳机图标显示图标显示图标显示图标,Android 通知栏图标
  9. 公交管理系统的设计与实现
  10. 用算符优先法对算术表达式求值(六)