手撸WEB框架

手撸web框架

软件开发的架构

C/S架构: 客户端 / 服务端

B/S架构: 浏览器 / 服务端

bs的本质也是cs

HTTP协议

http是一种超文本传输协议

1.四大特性

  • 基于TCP/I P之上作用于应用层
  • 基于请求响应
  • 无状态 (cookie session token..)
  • 无连接 (长连接 websocket ( http 协议的大补丁))

2.数据格式

  • 请求格式

    • 请求首行(请求方式, 协议版本.)
    • 请求头(是一大堆k: v键值对) 注意请求头和请求体之间的空格\r\n
    • 请求体(真正的数据,发post请求的时候才有, 如果是get请求)
  • 响应格式
    • 响应首行
    • 响应头 注意响应头和响应体之间的空格
    • 响应体

3.响应状态码

    • 用特定的数字表示一些意思
    • 1 xx: 服务端已经成功接收到了你的数据,正在处理, 你可以继续提交其他数据
    • 2 xx:服务端成功响应(200请求成功)
    • 3 xx:重定向.(例如用户没有登录就让他跳转到登录网页)
    • 4 xx:请求错误(404请求资源不存在, 403拒绝访问)
    • 5 xx:服务器内部错误(500 比如服务器宕机了)

请求方式

get请求:

  • 朝别人要数据

post请求:

  • 向别人提交数据(比如: 用户的登录)

url :

  • 同一资源定位符

手撸web框架

基于wsgiref模块

  • urls.py: 路由与视图函数对象关系
  • views.py: 放的是视图函数(就是处理一些业务逻辑)
  • templates: 模板文件夹(就是一堆html文件)

HTTP协议

1.纯手撸web框架

  • 手动书写socket
  • 手动处理http格式数据

2.基于wsgiref模块

  • 该模块实现了上面两个手动的过程
  • 根据功能的不同拆分成了不同的py文件
  • ursl.py: 里面是路由与视图函数的对应关系
  • views.py: 放视图函数(函数 , 类)
  • 当你拆分完成以后, 如果想要添加功能, 你仅仅只需要在上面的两个地方添加就可以了

3.动态与静态网页

  • 静态网页

    • 数据是写死的,是不变的
  • 动态网页
    • 数据是实时获取的
    • 例如:
      • 后端获取当前的时间展示到前端
      • 后端获取数据库中的数据展示到前端

python主流的三大web框架

Django

  1. 大而全 自带的功能有很多 类似于满级的账号
  2. 但有的时候会显得过去笨重, 毕竟东西太对了

Flask

  1. 小而精, 自带的功能特别少 类似于优秀小号
  2. 但是他的第三方模块特别多, 如果把它的第三方模块加起来的话完全可以超过Django
  3. 并且它比较依赖于带三方模块,一但模块崩了,它也就凉了,相当于有一帮大佬在带它

Tornado

  1. 异步非阻塞的特性, 它可以牛逼到开发游戏服务器.(支持高并发啊)

这三者的一个区别

A: socket部分

B:路由与视图函数对应关系

C:模板语法

Django:

  • A用的别人的 (比如:wsgiref)
  • B自己写的
  • C自己写的

Flask:

  • A用的别人的 werkzeug(基于wsgiref)
  • B自己写的
  • C用的别人的 jinja2

Tornado:

  • 牛逼三者都是自己写的

注意事项

  1. 计算机的名称不能是中文的
  2. 一个pycharm窗口就是一个项目
  3. 项目名里也尽量不要用中文

Django版本问题

  1. X 2. X 现在市面用的较多的还是1. X的(推荐使用1.11.9~1.11.13)

Djando安装

  • pip3 install django==1.11.11

验证你是否安装成功

  • 命令行直接敲Django-admin

简单介绍一个Django项目里的app

  1. 一个django项目就相当于一所大学,而app就类似于大学里面的学院.
  2. django其实就是用来写一个个应用的
  3. 一个app就相当于与一个独立的功能(比如你的用户功能,你的管理功能)
  4. django支持任意的多个app

如何来使用Django

命令行使用

  • 创建django项目: (django-admin startproject mysite)
  • 启动django项目:(python manage.py runserver)
  • 创建应用app:( python manage.py startapp app01)

注意事项

  1. 新创建的app需要你去settings配置文件中注册而pycharm只会帮你注册第一个你在创建项目的时候写的应用
  2. 使用命令行创建Django项目, 不会帮你创建templates文件夹,你只能自己创建
  3. 在settings文件中, 需要你手动在TEMPLATES里写配置(os.path.join(BASE, ‘remplates‘))
  4. 在你启动Django的时候,你一定要确保一个端口只有一个djiango项目

django项目里的对应

项目名

? 和项目名同名的文件夹

? settings.py 暴露给用户的配置文件

? urls.py 路由与视图函数对应关系

应用名

? migrations 文件夹 存放数据库迁移记录的

? admin.py django后台管理

? apps.py 注册相关

? models.py 模型类

? tests.py 测试文件

? views.py 存放视图函数

? templates 文件夹 存放html文件

? manage.py django 入口文件

原文地址:https://www.cnblogs.com/kangwy/p/11718011.html

时间: 2024-10-08 06:13:12

手撸WEB框架的相关文章

Python Django前奏手撸web框架 基于wsgiref的web框架

基于socke手撸web框架 # 请求首行 b'GET / HTTP/1.1\r\n #GET /index HTTP/1.1\r\n (index)为浏览器请求地址) # 请求头 Host: 127.0.0.1:8080\r\n Connection: keep-alive\r\n Cache-Control: max-age=0\r\n Upgrade-Insecure-Requests: 1\r\n # User-Agent用来标识是不是浏览器 User-Agent: Mozilla/5.

纯手撸web框架

纯手撸web框架 一.Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示: 上图:Web应用组成 二.手鲁web应用 2.1 基本版 import socket """ @author RansySun @create 2019-10-18-11:

手写web框架之加载配置项目

一  定义框架配置项 在项目的src/main/resources目录下创建一个名为smart.propertiesd的文件,文件的内容如下: 1 smart.framework.jdbc.driver=com.mysql.jdbc.Driver 2 smart.framework.jdbc.url=jdbc:mysql://localhost:3306/jack 3 smart.framework.jdbc.username=root 4 smart.framework.jdbc.passwo

手写web框架之实现Bean容器

实现Bean容器 使用ClassHelper可以获取所加载的类,但无法通过类来实例化对象,因此我们需要提供一个反射工具类,让它封装java反射相关的API,对外提供更好用的工具方法.将该类命名为ReflectionUtil,代码如下: 1 package org.smart4j.framework.org.smart4j.framework.util; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 import

web框架基础

HTTP协议(超文本协议) 四大特性 基于TCP/IP之上作用于应用层 基于请求响应 发是请求,给是响应 无状态 不保存用户状态,连一次就给忘了 无连接 eg:one night love 数据格式 请求格式 请求首行(请求方式,协议版本等) 请求头(一大堆K:V键值对) \r\n 请求头(真正的数据 发post请求的时候才有 如果get请求不会有) 响应格式 响应首行 响应头 \r\n 响应体 响应状态码 用特定的数字表示一些数据 ? 1xx:服务端已经接收到了你的数据 正在处理 你可以提交其

web框架学习

目录 web框架学习 HTTP协议(超文本协议) 四大特性 数据格式 请求方式 纯手撸web框架 简单c/s连接 稍微复杂web框架 基于wsgiref 客户端通过访问服务器获取字典 动静态页面 客户端通过访问服务器获取当前时间 客户端通过访问服务器获取数据库数据 python三大主流web框架 web框架学习 HTTP协议(超文本协议) 四大特性 基于TCP/IP之上作用于应用层 基于请求响应 发是请求,给是响应 无状态 不保存用户状态,连一次就给忘了 无连接 eg:one night lov

Django框架介绍 python三大主流web框架之一

一.学习准备 1.下载安装Django(建议安装1.x版本) 方法:终端cmd输入命令:pip install django==1.11.11  然后回车即可 校验是否安装成功:django-admin 二.纯手撸web框架 1.纯手撸web框架 软件开发架构 c/s架构 b/s架构 本质bs也是cs web后端 需求: 1.根据用户输入不同的后缀返回不同的内容 从符合http协议格式的数据中获取用户输入的后缀 不足之处: 1.socket代码是我们自己写的 2.http数据也是我们自己处理的

自己手写WEB程序框架并运行

1.新建文件夹,起名MyWeb 2.文件夹下,新建两个文件夹 WEB-INF, META-INF,,还可以新建一些jsp,html文件 ,如 index.html 3在WEB-INF中必须存在一个文件WEB.xml, 还包含两个文件夹 lib, classes 4 在WEB.xml中写入最简单的<web-app> ....  </web-app>,,,,,编辑一下index.html 下面是要运行了 1,cmd 2,切换到MyWeb的文件夹,jar 命令查看一下各个参数的含义 3,

Go语言及Web框架Beego环境搭建手顺

本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位windows系统安装使用 下载地址: https://code.google.com/p/go/downloads/detail?name=go1.1.2.windows-386.msi 2) go1.2rc1.windows-amd64.msi,对应32位windows系统安装使用 下载地址: https://code.google.com/p/