计算机基础知识48

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  socketserver = 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_serverfrom urls import urls
def run(env,response):""":param env:请求来的时候,携带的请求数据都在这个里面:param response:服务端给客户端响应的数据:return:返回客户端显示的"""response('200 OK',[])print(env)current_path = env.get('PATH_INFO')func = Nonefor url in urls:if current_path == url[0]:func = url[1]  # 后缀对应的函数名breakif 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.mzph.cn/news/136844.shtml

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

相关文章

数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法(暴力匹配算法)1.背景2.假设我们要从下面的主串 S"…

“最强”机器学习辅助!利用自然语言让机器人更好地理解开放性世界

原创 | 文 BFT机器人 想象一下,你正在国外拜访朋友,打开他的冰箱看看有没有能够制作一顿美味早餐的食材。最初,冰箱里的许多物品对你来说都很陌生,每个物品的包装都是你不熟悉的。你开始试图理解每个物品的用途,并根据…

万界星空科技MES系统软件体系架构及应用

MES系统是数字化车间的核心。MES通过数字化生产过程控制,借助自动化和智能化技术手段,实现车间制造控制智能化、生产过程透明化、制造装备数控化和生产信息集成化。生产管理MES系统主要包括车间管理系统、质量管理系统、资源管理系统及数据采集和分析系统…

Ubuntu开机无法进入系统,文件根系统目录空间不足导致?

前言: 自己电脑上装的是Win11和Ubuntu20双系统,平时就是切换着用。 偶然有次,Ubuntu提示文件根系统目录空间不足,自己没在意。 结果下次开机进入Ubuntu时候,芭比Q了。。进不了系统 这样的事情发生很多次了,…

学者观察 | 数字经济中长期发展中的区块链影响力——清华大学柴跃廷

导语 区块链是一种全新的分布式基础架构与计算范式,既能利用非对称加密和冗余分布存储实现信息不可篡改,又可以利用链式数据结构实现数据信息可溯源。当前,区块链技术已成为全球数据交易、金融结算、国际贸易、政务民生等领域的信息基础设施…

事务(本地事务与分布式事务)

事务 1 本地事务1.1 事务的特性1.2 事务的隔离级别1.3 事务的传播属性 2 分布式事务2.1 分布式事务基础2.1.1 CAP定理2.1.2 BASE定理 2.2 分布式事务的解决方案2.2.1 两阶段提交(2PC)2.2.2 TCC补偿式事务2.2.3 消息事务最终一致性 1 本地事务 1.1 事务的…

module ‘torch‘ has no attribute ‘_six‘

主要问题是torchvision的问题 在122服务器上的scvi-env2环境中 import torch import torch.nn as nnimport numpy as npfrom tqdm import tqdm from torchvision.utils import save_image, make_grid # Model Hyperparametersdataset_path ./datasetscuda True DEVICE tor…

httpRequest库代码示例

python # 首先导入所需的库 library(httpRequest) # 设置主机名和端口号 proxy_host <- proxy_port <- # 使用httpRequest库的get函数下载图片 response <- httpRequest(", proxyHost proxy_host, proxyPort proxy_port) # 确保请求成功 if (response$sta…

腾讯云真的是良心云!服务器带宽、CPU、硬盘IO性能大揭秘!

本文将通过对腾讯云服务器CVM S5 4核配置的云服务器进行测试&#xff0c;来评估其在带宽、CPU和硬盘IO性能方面的表现。 在云服务器的并发处理中&#xff0c;带宽是一个重要的因素。经过测试&#xff0c;腾讯云的带宽网络表现非常出色&#xff0c;能够跑满带宽&#xff0c;同时…

表象变换与矩阵元

表象变换 一维粒子哈密顿量 表象中的矩阵元 态的表象变换 不难证明 算符的表象变换 坐标表象 Non-denumerable basis

人车实时精准管控!北斗让换流站作业更安全

换流站是高压直流输电系统的核心组成部分&#xff0c;对促进电网稳定运行、保障电力行业的可持续发展有着重要作用。长期以来&#xff0c;随着电网主变改扩建设工程的开展&#xff0c;站内作业人员安全管控压力随之增大&#xff0c;仅依靠传统的“人盯人”和“自主”管控模式较…

Java设计模式之迭代器模式

定义 提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示。 结构 迭代器模式主要包含以下角色&#xff1a; 抽象聚合角色&#xff1a;定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合角色&#xff1a;实现抽象聚合类&a…

mysql隐式转换转换引起的bug

生产环境中遇到一个情况情况 &#xff0c;过滤数据发现过滤不掉相关值情况&#xff0c;具体情况如下 原始数据&#xff1a; CREATE TABLE test (id bigint(11) NOT NULL AUTO_INCREMENT COMMENT 自增id,subject_id bigint(11) NOT NULL DEFAULT 0 COMMENT 主题id,subject_nam…

《QT从基础到进阶·十七》QCursor鼠标的不同位置坐标获取

一些常用鼠标图形&#xff1a; 鼠标光标相对于整个电脑屏幕的位置&#xff1a;QCursor::pos() 当前光标相对于当前窗口的位置&#xff1a;this->mapFromGlobal(QCursor::pos()) void MainWindow::mouseReleaseEvent(QMouseEvent* event) {QPoint pos event->pos(); …

pip 安装任意软件包报错

现象 使用 pip 命令时提示 查看源码 可以看到是从 pip 包中导入 main失败&#xff0c;点击查看目录 main 文件不见了&#xff0c;判断是文件缺失&#xff0c;重装 pip 即可 # python3 下载 pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # python2 下载…

代码随想录训练营Day1:二分查找与移除元素

本专栏内容为&#xff1a;代码随想录训练营学习专栏&#xff0c;用于记录训练营的学习经验分享与总结。 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;二分查找与移除元素 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a…

Java进阶(JVM调优)——阿里云的Arthas的使用 安装和使用 死锁查找案例,重新加载案例,慢调用分析

前言 JVM作为Java进阶的知识&#xff0c;是需要Java程序员不断深度和理解的。 本篇博客介绍JVM调优的工具阿里云的Arthas的使用&#xff0c;安装和使用&#xff0c;命令的使用案例&#xff1b;死锁查询的案例&#xff1b;重新加载一个类信息的案例&#xff1b;调用慢的分析案…

通配符匹配

题目链接 通配符匹配 题目描述 注意点 s 仅由小写英文字母组成p 仅由小写英文字母、‘?’ 或 ‘*’ 组成‘?’ 可以匹配任何单个字符‘*’ 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09; 解答思路 最初想到的是dfs 剪枝&#xff0c;但是用例超时了参照题…

STM32笔记—EXTI外部中断

一、简介 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行&#xff1b; 中断优先级&…

maven中的install 和 clean命令,以及compile、、package、test等操作介绍

maven中的install命令 主要就是谁要被其他模块依赖就install谁 Maven工具可以进行clean、compile、install、package、test等操作&#xff0c;但是这些操作有什么用呢&#xff0c;以下面的p2p-exterface为例说明一下&#xff0c;pwp-exterface工程目录如下&#xff1a; com…