WEB开发和WSGI--Django播客系统(一)

2024-08-24 13:38

本文主要是介绍WEB开发和WSGI--Django播客系统(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DJango项目-1.WEB开发和WSGI

文章目录

  • DJango项目-1.WEB开发和WSGI
    • HTTP协议
      • 安装httpd
      • 无状态,有链接和短连接
      • 协议
      • URL组成
      • HTTP消息
      • Cookie技术
      • Session技术
    • WSGI
    • WSGI APP应用程序端
      • 服务器端

wsgi_001

  • CS即客户端、服务器编程。
    1. 客户端、服务端之间需要使用Socket,约定协议、版本(往往使用的协议是TCP或者UDP),指定地址和端口,就可以通信了。
    2. 客户端、服务端传输数据,数据可以有一定的格式,双方必须先约定好。

001

  • BS编程,即Browser、Server开发
    1. Brower浏览器,一种特殊的客户端,支持HTTP(s)协议,能够通过URL向服务端发起请求,等待服务端返回HTML等数据,并在浏览器内可视化展示的程序。
    2. Server,支持HTTP(s)协议,能够接受众多客户端发起的HTTP协议请求,经过处理,将HTML等数据返回给浏览器。
  • 本质上来说,BS是一种特殊的CS,即客户端必须是一种支持HTTP协议且能解析并渲染HTML的软件,服务端必须能够接收多客户端HTTP访问的服务器软件。
  • HTTP协议底层基于TCP协议实现。
  1. BS开发分为端开发
    • 客户端开发:或称前端开发。HTML、CSS、JavaScript等。
    • 服务端开发:Python有WSGI、Django、Flask、Tornado等。

HTTP协议

安装httpd

  • 可以安装httpd或nginx等服务端服务程序,通过浏览器访问,观察http协议

无状态,有链接和短连接

  • 无状态:指的是服务器无法知道2次请求之间的联系,即使是前后2次同一个浏览器也没有任何数据判断出时同一个浏览器的请求。后来可以通过cookie、session来判断。
  • 有链接:是因为它基于TCP协议,是面向链接的,需要3次握手、4次挥手。
  • 短连接:Http 1.1之前,都是一个请求一个连接,而TCP的链接创建销毁成本高,对服务器有很大影响。所以,自Http 1.1开始,支持keep-alive,默认也开启,一个连接打开后,会保持一段时间(可设置),浏览器再访问该服务器就使用这个TCP链接,减轻了服务器压力,提高了效率。

协议

Http协议是无状态协议。
同一个客户端的两次请求之间没有任何关系,从服务器端角度来说,它不知道这两个请求来自同一个客户端。

URL组成

  • URL可以说就是地址,uniform resource locator统一资源定位符,每一个连接指向一个资源供客户端访问。schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]

  • 例如,通过http://www.xdd.com/pathon/index.html?id=5&name=python访问静态资源时,通过上面这个URL访问的是网站的某路径下的index.html文件,而这个文件对应磁盘上的真实的文件。就会从磁盘上读取这个文件,并把文件的内容发回浏览器端。

  1. scheme模式、协议
    • http、ftp、https、mailto等等。
  2. host:port
    • www.xdd.com:80,80端口是默认端口可以不写,域名会使用DNS解析,域名会解析成IP才能使用。实际上会对解析返回的IP的TCP的80端口发起访问。
  3. /path/to/resource
    • path,指向资源的路径。
  4. ?key1=value1&key2=value2
    • query string,查询字符串,问号用来和路径分开,后面key=value形式,且使用&符号分割。

HTTP消息

  • 消息分为Request、Response

    1. Request:浏览器向服务器发起的请求
    2. Response:服务器对客户端请求的响应
      • 请求报文由Header消息报头、Body消息正文组成(可选)
        • 请求报文第一行称为请求行
      • 响应报文由Header消息报头、Body消息正文组成(可选)
        • 响应报头第一行称为状态行
      • 每一次使用回车和换行符作为结尾
      • 如果有Body部分,Header、Body之间留一行空行
  • 请求报文

    1. 请求消息行:请求放Method请求路径协议版本CRLF
      wsgi_003
    2. 请求方法Method
    方法说明
    GET请求获取URL对应的资源
    POST请求数据至服务端
    HEAD和GET类似,不过不返回响应报文的正文
  • 常见的消息传递方式

    1. GET方法使用Query String。例如:http://www.xdd.com/pathon/index.html?id=5&name=python&name=linux通过查询字符串在URL中传递参数,而URL在请求报文的头部第一行

    2. POST方法提交数据

      请求消息如下
      POST /xxx/yyy?id=5&name=magedu HTTP/1.1
      HOST: 127.0.0.1:9999
      content-length: 26
      content-type: application/x-www-form-urlencodedage=5&weight=80&height=170
      

      请求时提交的数据是在请求报文的正文Body部分。

    3. URL中本身就包含信息
      http://www.xdd.com/python/student/001

  • 响应报文

    1. 响应消息行:协议版本 状态码 消息描述CRLF
      004
  • status code状态码

    1. 状态码在响应头第一行
      • 1xx 提示信息,表示请求已被成功接收,继续处理
      • 2xx 表示正常响应
        • 200 表示返回了网页内容,即请求成功
      • 3xx 重定向
        • 301 页面永久性移走,永久

这篇关于WEB开发和WSGI--Django播客系统(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102631

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹