当前位置: 首页 > news >正文

11.8知识总结(web应用程序、手写web框架、Django框架等)

一、 web应用程序

        1.1 什么是web?

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

案例:淘宝网、京东网、博客园、等都是基于web应用的程序

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

       1.2 Web应用程序的优点

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

     1.3   Web应用程序的缺点

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

二、  手写web框架

       2.1 什么是web框架?

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

       2.2 HTTP协议的特性

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

 每日一问? 如何做到在网址栏中输入什么后缀就返回什么后缀

解决思路:

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

三、  wsgiref模块的使用

     当前的服务端存在的问题

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

那如何优化以上的问题?

使用wesgire模块

     3.1 什么是wsgiref模块?

 wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装
它帮助我们封装了socket部分,另外,它也解决了部分的高并发问题,但是,它能够解决的并发量并不高
他们也会帮我们把HTTP格式的数据做封装处理,也就是说不需要我们在自己处理

      3.3 常见

views.py # 主要用来写业务逻辑的,它也称为是视图文件
urls.py  # 主要用来写后缀和视图函数的对应关系,它也称为是路由文件
template # 存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法.

四、  Django框架

      4.1 如何使用Django

     1..需要先安装: pip install django

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

     3 .django的版本要和你的Python的版本要匹配,django3用个2.7版本,不行
         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
'''Next, start your first app by running python manage.py startapp [app_label].'''

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

    4.2 应用

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

taobao
    user
    order
    address

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

   4.3  主要文件的介绍

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的启动文件,入口文件

    

相关文章:

  • 2023.11.09 homework
  • 2. Spark报错,Task is Failed,errorMsg: FileNotFoundException xxxx
  • uniapp刻度尺的实现(swiper)滑动打分器
  • 20 VPN详解
  • Flutter导入安卓第三方库报错:Flutter Could not find method implementation() 的可能原因及解决办法
  • QSqlDatabase使用Sqlite
  • 【c趣编程】输入一个整数,判断其有几位
  • kafka-go操作kafka
  • 计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法
  • uniapp的几种跳转方式
  • oled显示器程序(IIC)从stm32f103移植到stm32f429出现bug不显示-解决移植失败问题
  • react路由组件的lazyLoad
  • Go 语言初探:从基础到实战
  • 【gltf-pipeline】安装gltf-pipeline 进行文件格式转换
  • 汽车电子中的深力科推荐一款汽车用功率MOSFET NVTFS6H888NLTAG N沟道
  • hexo+github搭建个人博客
  • Asm.js的简单介绍
  • CentOS 7 修改主机名
  • flask接收请求并推入栈
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • pdf文件如何在线转换为jpg图片
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python利用正则抓取网页内容保存到本地
  • tweak 支持第三方库
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 简析gRPC client 连接管理
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 软件开发学习的5大技巧,你知道吗?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (09)Hive——CTE 公共表达式
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (算法设计与分析)第一章算法概述-习题
  • (一)Dubbo快速入门、介绍、使用
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)ObjectiveC 深浅拷贝学习
  • .Net mvc总结
  • .NET 中 GetProcess 相关方法的性能
  • @Autowired自动装配
  • @Bean注解详解
  • @ConfigurationProperties注解对数据的自动封装
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [echarts] y轴不显示0
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间