计算机基础知识48

news2024/12/23 14:56:53

web应用程序

# Django框架是一款专门用来开发web应用的框架

# Web应用程序是一种可以通过浏览器访问的应用程序, B/S架构

           案例:淘宝网、京东网...

# 应用程序有两种模式:

        C/S:客户端/服务器端程序,这类程序一般独立运行       

        B/S:浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行               

# Web应用程序的优点

        1. 你所需要的只是一个适用的浏览器
        2. 节省硬盘空间
        3. 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
        4. 过跨平台使用的例如Windows,Mac,Linux等等

# Web应用程序的缺点

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

# web框架:别人写好的框架(就是一堆目录和文件),我们只需要在固定的位置写代码即可

手写web框架(理解)

# web应用程序是B/S架构的,我们需自己写一个服务端、然后让浏览器作为客户端即可

   怎么样去写一个服务端? socket编程

# 在网址栏中输入什么后缀就返回什么后缀:

            1. 服务端要知道你网址栏里输入的是什么后缀
            2. 服务端做判断,然后做对应的返回

# 存在的问题:

        1. socket部分需要我们自己每次都要写
        2. 我们需要自己每次处理HTTP格式的数据,自己转码、自己切分、自己取值等
        3. 没有解决高并发问题

   优化问题------>wsgiref模块的使用

import  socket

server = socket.socket()
server.bind(('127.0.0.1',7890))
server.listen(3)

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'))  #TCP的流水协议,短时间内一次性接收多个数据

    if current_path == 'index':
        sock.send(b'index')
    elif current_path == '/home':
        sock.send(b'home')
    # 存在问题:自己转码,自己切分,自己取值,没有解决高并发问题等等

    sock.close()

# HTTP协议的特性:

1. 四大特性:* 基于请求响应
                      * 基于TCP协议之上的应用层协议
                      * 无状态
                      * 短链接    
2. 请求数据格式:# 请求首行(请求方式、协议、版本号、路径)
                             # 请求头
                             # \r\n
                             # 请求体(get请求方式是没有请求体的、POST请求方式才有请求体)
3. 响应数据格式: * 响应首行()
                              * 响应头
                              *   \r\n
                              *   响应体()
4. 响应状态码: 1xx、2xx、 3xx、 4xx、 5xx

wsgiref模块的使用

wsgiref服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器

# wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装

# 它帮助我们封装了socket部分,也解决了部分的高并发问题,会帮我们把HTTP格式的数据      做封装处理,也就是说不需要我们在自己处理

views.py: 主要用来写业务逻辑的,它也称为是视图文件

def index():
    with open('a.txt','r',encoding='utf-8')as f:
        return f.read()
    
# def index():
#     return 'from index'

def home():
    return  'from home'

def login():
    return 'from login'

def register():
    return 'from register'

urls.py :主要用来写后缀和视图函数的对应关系,它也称为是路由文件

from views import *

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

template:存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法.

"""每一个框架都应用有一个入口文件,Django也不例外"""

wsgiref模块:

from wsgiref.simple_server import make_server

from urls import urls
def run(env,response):
    """
    :param env:请求来的时候,携带的请求数据都在这个里面
    :param response:服务端给客户端响应的数据
    :return:返回客户端显示的
    """
    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__':
    sever = make_server('127.0.0.1',7000,app=run)   # WSGIServer类的对象
    """
        1、会实时监听'127.0.0.1':7890这个地址,只有客户端来连接就会做出响应
        2、app=run:当有客户端请求过来的时候,会把该请求交给run函数来处理,不要加()
        3、django中这里写的是函数名,当请求来的时候,会调用这个函数,函数加括号
        4、如果是flask框架,app后写的是对象,当请求来时会交给这个对象处理,只不过变成了对象加括号
            类()--->触发__init__执行
            对象() --->实例化---->__call__的执行---->里面写的是falsk框架的源码入口位置
    """
    sever.serve_forever()  # 启动框架

Django框架的学习

# python中的主流框架:
Django框架:最主流的,市场占用率90%以上,笨重的,自带了很多模块,不适用于小项目
flask框架:轻量级的,小而美,自带功能比较少,需要安装很多第三方模块,当安装模块足 够多时,也跟Django差不多笨重了
torna框架:异步非阻塞,高性能、学这个框架成本高,解决并发量高,一般用于特殊场景
sanic框架
fastapi框架:主要用来写一些接口,不出来页面,只负责写业务逻辑

## 主要就来学习Django的使用:

1. 需要先安装: pip install django

2. 版本的问题:
            django1.x: 以前的老项目在使用,它跟2.x的版本区别不是特别大
            django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
            django3.x: 新版本了,现在有不少的项目确实在选择3.x的版本
         # 比如:drf框架要求django的版本必须是2以上,不支持1的版本

3. django的版本要和你的Python的版本要匹配:
                        django2----->python3.6以上
                        django1----->python3.6

4. 如何创建django项目:# 先切换路径到你想存储的位置
      命令行创建:
                django-admin startproject 项目名称
                 django-admin startproject myfirst

    pycharm创建项目: File---->New project-----> django ...

5. 注意事项:
            1. 项目名称必须是英文,不能是中文
            2. 一个pycharm窗口只打开一个django项目

6. 启动项目:  # 先把路径切到跟manage.py同级目录下面
     命令行启动:
                python3 manage.py runserver
                python3 manage.py runserver 8001

7. 创建应用:
             python manage.py startapp 应用名
             python manage.py startapp app01

# 创建完应用之后,还要做一件非常重要的事情,就是注册应用

# 打不开的话,在setting里面设置

            'DIRS': [os.path.join(BASE_DIR, 'templates')]

应用的概念

Django框架就类似于是一所大学,一所大学也要有二级学院
应用就类似于是二级学院,一个Django框架至少要有一个应用

taobao
    user
    order
    address
    """应用名要做到见名知意,符合变量的命名规则即可,但是,教学使用app01 02 03..."""

Django主要文件的介绍

mysecond                    # 项目名称
    app01                      # 应用名称
        migrations           # 它是迁移数据的记录
        __init__.py
        admin.py             # django自带的后台管理系统
        apps.py               # 暂且忽略,写一些注册的东西
        models.py           # 模型层,跟数据库打交道的,以后创建表就在这里写
        tests.py               # 测试脚本
        views.py              # 视图文件,主要用来写核心的业务逻辑的
    
    mysecond
        __init__.py
        settings.py            # Django的全局配置文件
        urls.py                  # 路由文件,写地址的后缀和视图函数的对应关系
        wsgi.py                # wsgiref服务器
    templates                 # 存储HTML文件的
    db.sqlite3                 # Django自带的小型数据库
    manage.py               # Django的启动文件,入口文件

今日思维导图:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

子查询,内查询 嵌套查询

子查询语句 一个查询语句中还有一个查询语句 Select,,,(select) 括号里的查询语句优先于查询语句执行,然后再把子查询的结果作为条件返回给主查询条件进行过滤 格式: #In Select 列名from …

leetcode刷题日记:94. Binary Tree Inorder Traversal(二叉树的中序遍历)

给出二叉树的根结点,返回二叉树的中序遍历序列。 二叉树的中序遍历序列是先遍历左子树再遍历根结点然后再遍历右子树,在遍历左子树是这个结点是左子树的根结点,左子树有左子树和根结点右子树,也就是说在遍历的时候我们要递归遍历。…

某XX自考小程序的AES加密分析

前言 主要是报了自考在这个小程序上面做题,就研究了一下这个接口本文仅供学习交流使用,请勿随意传播。如有侵犯你的权益及时联系我删除。 一、抓包分析打开小程序,打开devtools 工具,这里就不啰嗦,直接上过程。 点击…

5亿美元!ChatGPT竞争对手Aleph获巨额融资

11月7日,生成式AI平台Aleph Alpha在官网宣布,获得超过5亿美元(约36亿元)B轮融资。本次由博世风投、施瓦茨集团、SAP、惠普等知名财团参投。 Aleph Alpha自研了大语言模型Luminous系列,包含130亿、300亿和700亿三种参数…

人工智能(AI)是一种快速发展的技术,其未来发展前景非常广阔。

人工智能(AI)是一种快速发展的技术,其未来发展前景非常广阔。以下是一些关于AI未来的可能发展方向和就业前景的详细说明: 1.机器学习工程师:机器学习是AI的核心技术之一,它涉及到从数据中自动学习模式并进…

『MapStruct』POJO 映射转换框架指南

前言 本文将会主要讲解后端开发中 VO、DTO、Entity 相互转化方式,并且针对其中比较成熟的框架 MapStruct 进行解读和教学 问题 微服务架构下,服务拆分会产生 VO、DTO、Entity 三类 POJO VO 用于前端接口参数传递,例如用于 http 接口接收请…

​【错误解决方案】ModuleNotFoundError: No module named ‘ahocorasick‘

1. 错误提示 ModuleNotFoundError: No module named ahocorasick,这意味着你试图导入一个名为 ahocorasick的模块,但Python找不到这个模块 2. 解决方案 安装缺失的模块: 如果你确定模块名称正确但仍然收到这个错误,那么可能是你没有安装这个…

基于springboot+vue的影城管理系统

影城管理系统 编号:springboot33 源码合集: www.yuque.com/mick-hanyi/javaweb 源码下载:博主私 目 录 摘 要 1 前 言 2 第1章 概述 2 1.1 研究背景 3 1.2 研究目的 3 1.3 研究内容 4 第二章 开发技术介绍 5 2.1相关技术 5 2.2 Java技术 6…

逆向-文心一言开发者控制台调试

一打开标准的无限debugger 往上一层可以发现是jsvmp,这样替换文件相对来说就不太好搞 根据测试如果卡在debugger就会跳转页面 但是放行debugger就可以正常使用 可以基本确定debugger前后存在计时程序 这个时候就可以考虑对apply做hook劫持无限debugger的函数&#…

每天都很煎熬,领导派的活太难,真的想跑路了

人在江湖身不由己,无论是领导的亲信还是团队的边缘,都可能遇到这种情况———不得不干一件特别难以推进的事情,茫然无措,不知如何推进。每天陷入焦虑和自我怀疑中…… 这种事情一般有一些共同特点。 结果和目标极其模糊。需要协…

企业防范数据安全的重要性与策略

随着信息技术的快速发展,企业的数据安全问题日益凸显。数据安全不仅关乎企业的商业机密,还涉及到客户的隐私和信任。因此,企业必须采取有效的防范措施,确保数据安全。本文将探讨企业防范数据安全的重要性,并介绍一些实…

图像质量评估——PSNR:峰值信噪比和SSIM:结构相似性(纯手撸代码)

目录 PSNR原理代码运行测试结果 SSIM原理代码运行测试结果 总结 PSNR 原理 PSNR 是一种衡量图像质量的指标,它是通过比较原始图像和失真图像之间的差异来计算的。具体来说,PSNR 是通过比较两幅图像的每个像素值来计算的。给定一个大小为 mn 的干净图像…

董事长孙进任职资格获批,盛京银行坎坷向前

11月6日,国家金融监管总局行政许可信息显示,盛京银行(HK:02066)董事长孙进的任职资格已于近日获准。 作为东北地区成立最早、规模最大的总部银行,盛京银行近年来的发展之路颇为坎坷,在经历了大规模的管理层…

最近的总结(2023.11.8)

菜鸟本来是不打算写文章的,奈何1500的曝光券让我心痒难耐 菜鸟主要是想把这篇博客(平凡人的一生的意义是什么?)推出去,看看大家的看法! 不过既然写,菜鸟自然要好好写,就来聊聊最近…

实现财务自由的十大步骤

一、明确实现财务自由的意义 很多人都希望实现财务自由,但是只有很少人真正想过:我为什么要实现财务自由? 不喜欢干活,不喜欢工作不想让工作束缚自己,不想靠工资收入来维持生活想自由自在,无拘无束环游世界 所以就…

基于袋獾算法的无人机航迹规划-附代码

基于袋獾算法的无人机航迹规划 文章目录 基于袋獾算法的无人机航迹规划1.袋獾搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用袋獾算法来优化无人机航迹规划。 1.袋獾搜索算法 …

AI全栈大模型工程师(十九)Semantic Kernel

文章目录 Semantic KernelSK 的开发进展SK 的生态位SK 基础架构后记 Semantic Kernel 先比较下 Semantic Kernel 和 LangChain。 Semantic KernelLangChain出品公司微软LangChain AI支持语言Python、C#、Java、TypeScriptPython、TypeScript开源协议MITMIT被应用在Microsoft …

第三章:人工智能深度学习教程-基础神经网络(第四节-从头开始的具有前向和反向传播的深度神经网络 – Python)

本文旨在从头开始实现深度神经网络。我们将实现一个深度神经网络,其中包含一个具有四个单元的隐藏层和一个输出层。实施将从头开始,并实施以下步骤。算法: 1. 可视化输入数据 2. 确定权重和偏置矩阵的形状 3. 初始化矩阵、要使用的函数 4. 前…

各省市90米分辨率DEM数据,多图可下载

之前给大家推了30米分辨率dem数据,有些小伙伴反应也需要90米的,于是今天就给大家推荐一个新数据 —— 各省市90米分辨率DEM数据! 各省市90米分辨率DEM数据广泛应用于国土资源调查、水利水电工程、地质灾害预警、城市规划等领域,对…