第52天:Web应用、手写Web框架、Django的下载安装

news/2025/2/19 10:22:48

Web应用程序

        介绍

        Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

        应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。

        Web应用程序的优点

  • 网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;
  • 网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
  • 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
  • 网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
  • 因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)

        Web应用程序的缺点

  • 严重依赖服务端的正常运行、服务端一旦出问题、客户端里面受到影响

 手写web框架

python">import socket

server = socket.socket()

server.bind(('127.0.0.1', 8000))

while True:
    sock, addr = server.accept()
    data = sock.recv(1024)  
    
    print(data.decode('utf-8'))
    
    str_data = data.decode('utf-8')
    
    lst_data = str_data.split()
    
    print(lst_data)
    
    current_path = lst_data[1] 
    
    sock.send(b'HTTP/1.1 200 OK \r\n\r\n')  
    
    if current_path == '/index':
        sock.send(b'index')
    elif current_path == '/home':
        sock.send(b'home')
    else:
        sock.send(b'404 error')
        
    sock.close()

wsgiref模块       

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

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

        正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口协议来实现这样的服务器软件,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。而wsgiref模块就是python基于wsgi协议开发的服务模块。

        wsgiref文件

python">from wsgiref.simple_server import make_server

from urls import urls


def run(env, response):
    response('200 OK', [])
    print(env)
    current_path = env.get('PATH_INFO')
    func = None
    for url in urls:
        if current_path == url[0]:
            func = url[1]
            break

    if func:
        res = func()
        return [res.encode('utf-8')]
    else:
        return [b'404 error']


if __name__ == '__main__':
    server = make_server('127.0.0.1', 8000, app=run)
    server.serve_forever()

        urls文件

python">from views import *

urls = (
    ('/index', index),
    ('/home', home),
    ('/login', login),
    ('/register', register),
)

        views文件

python">def index():
    with open('templates/index.html', 'r', encoding='utf-8') as f:
        return f.read()

def home():
    return 'from home'

def login():
    return 'from login'

def register():
    return 'from register'

Django的下载安装

        下载Django

        方式一:在命令行输入:pip3 install django

        注:

        pip install django==1.11.9 -i

        http://pypi.hustunique.org/simple 指定版本号,指定国内镜像

        方式二:用pycharm安装

        方式三:用pycharm的Terminal的命令行安装

        版本的问题

        django1.x:以前的老项目在使用,它跟2.x的版本区别不是特别大
        django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
        django3.x:新版本了,现在有不少的项目确实在选择3.x的版本 

        创建django项目

        命令行创建:    django-admin startproject 项目名称

        django-admin startproject myfirst        

        pycharm创建项目

        File ---> New project ---> django

        启动django项目

        命令行启动

        python manage.py runserver 8001

文章来源:https://blog.csdn.net/Mrdong200144/article/details/134292930
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/5165285.html

相关文章

C# 如何优雅的写代码[进阶篇]

文章目录 前言相关文章如何让代码优雅知识点补充enum枚举类型?null判定 前言 我之前发布过一些篇章,是专门关于代码优化的,距离我上一次[如何优雅的写C#]已经过去半年时间了,最近我又研究出了一些新东西。 相关文章 如何优雅的写C#&#x…

TSINGSEE视频智能分析系统AI算法针对遛狗不拴绳行为的监管方案

一、背景与需求 近期,一则恶犬咬伤女童的新闻上了热搜,因为狗主人没有给狗拴绳,导致小区内一女童被大型犬撕咬,女童全身多处咬伤,已入院治疗。该新闻曝出后立刻引发社会关注。遛狗不拴绳行为也再一次引发热议。因为狗主…

创业者关注的聚合代驾平台是什么?

随着代驾用户量的不断增长,代驾市场发展也一路高歌猛进,成为近年被许多创业者所看好的风口行业,因此选择代驾创业的人越来越多,但想要创业,必须搞清楚聚合代驾平台是什么?这是一个新兴的创业领域和代驾软件…

MySQL数据库基本操作-DDL 数据库基础知识

目录标题 1、数据库操作1-1 查询所有数据库1-2 创建数据库1-3 选择使用那个数据库1-4 删除数据库 2、数据库表操作2-1 创建数据库表2-2 查看当前数据库所有表名称2-3 查看指定某个表的创建语句2-4 查看表结构2-5 删除表 3、修改表结构格式3-1 修改表添加列3-2 修改列名和类名3-…

vue、react数据绑定的区别?

Vue 和 React 是两个流行的前端框架,它们在数据绑定方面有一些区别。 Vue 的数据绑定: Vue 使用双向数据绑定(two-way data binding)的概念。这意味着当数据发生变化时,视图会自动更新;同时,当…

【JavaEESpring】Spring, Spring Boot 和Spring MVC的关系以及区别

Spring, Spring Boot 和Spring MVC的关系以及区别 Spring:简单来说,Spring 是一个开发应用框架,什么样的框架呢?轻量级、一站式、模块化,其目的是用于简化企业级应用程序开发 Spring的主要功能: 管理对象, 以及对象之…

生成指定长度的随机数字,用对方法精准提效数10倍!

生成指定长度的随机数字这一函数功能可能在以下情况下被使用: 密码生成:在需要生成随机密码时,可以使用该功能生成指定长度的随机数字作为密码。 随机数生成:在需要生成一定长度的随机数列时,可以使用该功能生成随机…

高级运维学习(十四)Zabbix监控(一)

一 监控概述 1 监控的目的 (1)报告系统运行状况 每一部分必须同时监控内容包括吞吐量、反应时间、使用率等 (2)提前发现问题 进行服务器性能调整前,知道调整什么找出系统的瓶颈在什么地方 2 监控的资源类别 …