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

Web框架简介

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

如果你要从零开始建立了一些网站,可能会注意到你不得不反复解决一些类似的问题。这样做是令人厌烦的,并且违反了良好编程的核心原则之一―DRY(不要重复自己)。即使是有经验的Web开发人员在创建新站点时也会遇到类似的问题。在实际开发中,通过使用Web框架可以解决这些问题。Python为我们提供了许多框架,如Flask、Django、Bottle等。

1  什么是Web框架

Web框架全称为Web应用框架(Web Application Framework),用来支持动态网站、网络应用程序及网络服务的开发。Web框架可以使用任何语言编写,换而言之,每种语言都有对应的Web框架用来编写Web程序。框架会提供如下常用功能:

l  管理路由

l  访问数据库

l  管理会话和Cookies

l  创建模板来显示HTML

l  促进代码的重用

应用Web框架可以避免重复的开发过程,在创建新网站时,可以重复利用已有的框架,从而节省一部分人力,当然也能节省一部分开销,它可以算得上是网站开发过程的一大利器。

2  Python常用的Web框架

Python中的Web框架可以称得上是百家争鸣,各种框架数不胜数。而关于这些框架孰优孰劣的讨论一直在持续,导致从事Web开发的人员不知道如何选择框架。本小节我们就来介绍一些当前主流的Web框架的特点。

(1)Flask

Flask是一款轻量级Web应用框架,它是基于Werkzeug实现的WSGI和Jinja2模板引擎。Flask的作者是Armin Ronacher。Flask的设计哲学为:只保留核心,通过扩展机制来增加其他功能。Flask的扩展环境非常丰富,Web应用的每个环节基本上都有对应的扩展供开发者选择,即便没有对应的扩展开发者自己也能轻松地实现一个。

(2)Django

Django最初是被用来管理劳伦斯出版集团旗下一些以新闻内容为主的网站的,它是以比利时的吉卜赛爵士吉他手Django Reinhardt的名字来命名的,它和Flask是目前使用最广泛的Web框架。它能取得如此大的应用市场很大程度上是因为提供了非常齐备的官方文档及一站式的解决方案,包含缓存、ORM/管理后台、验证、表单处理等,使开发复杂的数据库驱动的网站变得更加简单。但由于Django的系统耦合度太高,替换内置的功能往往会占用一些时间。

(3)Bottle

Bottle是一款轻量级的Web框架。它只有一个文件,代码只使用了Python标准库,却自带了路径映射、模板、简单的数据库访问等Web框架组件,而不需要额外依赖其他第三方库。它更符合微框架的定义,语法简单,部署也很方便。

(4)Tornado

Tornado全称Tornado Web Server,最初是由FriendFeed开发的非阻塞式Web服务器,现在的Tornado框架是被 FaceBook收购后开源的版本。由于Tornado是非阻塞式服务器,速度相当快,每秒钟可以处理数以千计的连接,这意味着对于长轮询、WebSocket等Web服务来说,Tornado是一个理想的Web框架。

相关文章:

  • Kubernetes之Pod详解
  • Ubuntu22.04系统安装及配置
  • 构造函数实现依赖注入
  • 嘉楠勘智CanMV-K230的大小核如何操作
  • MapReduce 实践题:Web 访问日志分析与异常检测
  • Selenium - 翻页(常用代码)
  • 第七章-2·集合
  • uniapp 自定义页面顶部导航栏
  • Selenium WebDriver - 浏览器交互
  • 大模型参数高效微调学习笔记
  • 从0开发一个Chrome插件:用户反馈与更新 Chrome 插件
  • C++面向对象三大特性--多态
  • Java程序之简单“记事本”
  • 【感悟】世界著名五大学习法
  • C# OpenCvSharp 图像处理函数-颜色通道-cvtColor
  • ----------
  • (三)从jvm层面了解线程的启动和停止
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2017届校招提前批面试回顾
  • CentOS从零开始部署Nodejs项目
  • Consul Config 使用Git做版本控制的实现
  • echarts的各种常用效果展示
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Redis中的lru算法实现
  • SQLServer之索引简介
  • supervisor 永不挂掉的进程 安装以及使用
  • underscore源码剖析之整体架构
  • Vue2.x学习三:事件处理生命周期钩子
  • 官方解决所有 npm 全局安装权限问题
  • 为视图添加丝滑的水波纹
  • 一个JAVA程序员成长之路分享
  • 以太坊客户端Geth命令参数详解
  • 责任链模式的两种实现
  • 找一份好的前端工作,起点很重要
  • puppet连载22:define用法
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 容器镜像
  • # dbt source dbt source freshness命令详解
  • $forceUpdate()函数
  • %@ page import=%的用法
  • (二十六)Java 数据结构
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (万字长文)Spring的核心知识尽揽其中
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)项目管理杂谈-我所期望的新人
  • (转)一些感悟
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET4.0并行计算技术基础(1)
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET连接MongoDB数据库实例教程
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken