2018年最好用的5个python网站开发框架

2023-11-15

python作为解释型脚本语言,是一种通用的编程语言。由于python社区拥有大量的库文件、框架和其他的一些实用工具,我们可以用python完成各种各样的任务。另外,由于python的代码构成和结构就像英语句子一样自然,这种语言的学习曲线也比较平缓。因此和其他语言相比,好多网站开发人员更喜欢用python来确保代码的可读性。

然而,python一开始被设计出来的时候,并没有特别倾向于网站开发。正是由于这个原因,我们在使用python做网站时,就不得不借助数量繁多的web开发框架。在这篇文章里,我们聊一聊2018年将会流行的web框架。

最实用的框架列表:我们总结的5个

通过大量的试验总结,我们整理了5个最实用、最好用的框架。下面让我们细细道来:

Django

排位第一的当然是Django。事实上,正是由于Django的存在,成百上千的网站项目才能成功,python才能成为网站开发中最常用的语言。包括 Instagram, Mozilla Firefox, National Geographic, Pinterest, NASA等在内的大型机构、公司,都在使用Django作为网站开发框架。

这也就是为什么对于大多数网站开发者来说,如果使用python作为开发语言,那么Django就是唯一一个最常被提及的框架。尤其是因为下面的一些特性和优点,Django CMS总是作为网站开发中最基础、最常用的管理系统:

1、有好多拿来就能直接使用的模板

2、操作数据库

3、面向对象的编程方法

4、网络地址映射

5、内置网站服务器

6、可以使用HTML表单获取数据,并传递给服务器(在Django中实现这一功能实在是太简单了,以至于菜鸟也能轻松使用)

7、安全可靠的用户权限

8、直观的管理界面

9、强大的XML/JSON处理功能

由于上面提到的这些方面,Django能够胜任各种大型网站项目。你对这个框架心动了吗?如果没有,那我们看下一个。

CherryPy

CherryPy是仅次于Django的网站开发框架,它最大的特性就是能够同时运行好几个web服务。Django和CherryPy最大的区别在于,后者没有像前者那样多的模板,而是提供可以导入的库文件。事实上,这种方式给开发者以很大的自由度和扩展性,程序员可以自由的选择使用或者禁用各种模板、用户权限和数据库。

除此之外,CherryPy事实上是一个基于Python的简约而不简单的HTTP框架,允许和所有类型的服务器(如Apache等)进行交互。如果你是刚刚接触网站开发,一定要记住在项目中最好形成一套自己用着顺手的工具集合(我们应该清楚地知道,CherryPy具有灵活强大的插件系统)。

TurboGears

TurboGears是一种MVC架构的网站开发框架,它基于一些WSGI组件(比如SQLAlchemy, Ming, Repoze等)、模板引擎( Genshi, Kajiki, Cheetah, Myghty)和大量的库文件以及中间件(middleware)。同时它具有 widgets控件,可以非常方便的生成一些特定的功能。

TurboGears的主要特色是:用FormEncode进行表单验证;使用 Gearbox作为项目管理工具,并提供网络服务(新的版本也支持使用Apache或者Nginx作为服务器);许多实用的命令行工具;支持MochiKit模块,一种处理文本内容的genshi模板引擎,同时包含创建UI和Tosca Widgets的库文件。这些常用功能给程序员带来的方便,是其他框架所不能替代的。还有一点——许多使用TurboGears的程序员都会推荐它的精简模式,也就是说,TurboGears可以配置成最轻量级的框架。

Flask

Flask是一个相当新的框架,他的开发者在深入彻底的研究了现有的各种框架后,分析了它们利弊,在此基础上开发出了这一个取所有精华,去所有糟粕的web框架。

Flask是一个轻量级框架,简单易学,它在一些仅有一两个功能的小型项目上得到了大量应用。比如httpbin这样的项目,简单但非常强大。跟CherryPy差不多,支持所有的DBMS和模板引擎。Flask的优势在于拥有众多的扩展工具来创建基于网站的应用(应当鼓励初学者多使用这些工具),它的代码同样简洁明了(只要3行代码就能搭建一个显示“Hello World”的主页),通过蓝图(blueprint)实现模块化管理,支持Django官方模板语言Jinja2,能够创建基于API的方案和一次性工具(用其他框架实现这些功能的话,既费时又费力)。

Pyramid

我们提到的最后一个框架是Pyramid,它由Pylons项目中的一部分演变而来。Pyramid最大的特点就是灵活性和可扩展性(尤其和Django相比)。在使用Pyramid时,程序员可以自由的选择使用什么样的数据库、URL结构、模板风格等等,正如这个框架的开发者所说:

“那些重量级的框架都在替用户做决定。但是如果这些不适合你,你也无可奈何;轻量级的框架不替你做决定,你可以很快的上手。但是随着你的网站越做越大,你就会发现小框架限制了你的大项目。上面这两种情况,都是只关注项目的开始阶段:不是太大就是太小,换句话说,在项目刚开始的时候,你并不能真正的预测到项目后期会有多大、功能会有多复杂。你需要一个注重网站后期开发的框架,这样不管你的项目后期是大是小,它都能很好地满足你的需求。Pyramid就是这样一个框架,可大可小,刚刚好。”

使用Pyramid,可以不费劲的利用SQLAI创建传统的RDBMS应用。和Flask一样,Pyramid支持多种类型的模板语言和引擎,包括Jinja2和Mako,而且它自己也内置有解决方案。甚至,它还兼容Chameleon——一个便捷的、通用的ZPT模板工具。

Pyramid被大家广泛认可的优点包括:可以将一个完整的网站生成一个单一的文件;可以修改的模板;可配置的资源;灵活的身份验证和授权;高级的引导工具——pcreate;基于view的方法;支持命令型和陈述型的配置语法;HTTP缓存;内建Session会话等等。一般而言,Pyramid是目前最流行的构建大中小型应用的框架。另一方面,正是由于这么强大的灵活性,可能会让一些有选择困难症的初学者纠结于使用哪些功能,如果选择不好,可能会掉进一个又一个的坑里去。

选择Python web框架:怎样避免错误的选择

让我们总结一下。正如你所看到的,我们在选择合适的框架时,应该是依据自身的需求和项目的特点,量体裁衣。对于上面的几个框架,我都一视同仁,我并不坚持认为哪一个更好或者更差。

如果你想开发一款网络应用,却不知道选择哪一个合适的框架,最好的方法是找一些有经验的人请教。当然,你也可以联系我们。


英文原文:https://webcase.studio/blog/best-python-frameworks/?utm_source=catalogs&utm_campaign=python
译者:bird 



∞∞∞


IT派 - {技术青年圈}
持续关注互联网、区块链、人工智能领域


公众号回复“Python”

邀你加入{ IT派Python技术群 } 




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2018年最好用的5个python网站开发框架 的相关文章

随机推荐

  • 中文停用词

    一 数 日 0 1 2 3 4 5 6 7 8 9 lt gt gt gt A Lex exp sub sup
  • 专题详解-5G接入控制(1)

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 最近工作中遇到了一些5G专网接入限制的问题 以前没仔细研究 借着解决这
  • angular路由参数路由跳转

    路由参数及跳转 本节介绍路由参数及跳转相关 准备工作 首先 我们需要将上一节的 CommentService UserService抽离成单独的文件 以便多处使用 ng g s components router study comment
  • Python入门_使用while循环计算1-100之间偶数和

    案例 计算1 100之间所有偶数的和 i 1 定义一个变量sum为0 用来存放和 sum 0 while i lt 100 每次sum和i相加 if i 2 0 sum i i 1 执行完之后 打印sum的值 print 1 100之间偶数
  • Nginx实现反向代理和负载均衡

    Nginx安装 本文章主要介绍下 如何使用Nginx来实现反向代理和负载均衡 Nginx安装和基础知识 可参考我的这篇文章 Nginx安装 Nginx实现反向代理 实现反向代理需要准备两台Nginx服务器 一台Nginx服务器A ip为 1
  • leetcode33. 搜索旋转排序数组

    整数数组 nums 按升序排列 数组中的值 互不相同 在传递给函数之前 nums 在预先未知的某个下标 k 0 lt k lt nums length 上进行了 旋转 使数组变为 nums k nums k 1 nums n 1 nums
  • 【Python编程】如何在 Jupyter Notebook 中切换虚拟环境

    如何在 Jupyter Notebook 中切换虚拟环境 一 操作步骤 1 首先切换到想要在 Jupyter Notebook 里使用的虚拟环境 conda activate 环境名称 2 安装 ipykernel conda instal
  • TCP详解(一)服务和首部介绍

    文章目录 引言 TCP的服务 TCP首部 引言 TCP全称传输控制协议 Transmission Control Protocol 它是一种传输层通信协议 提供了面向连接的 可靠的字节流服务 本文将会简要介绍TCP为应用层提供的服务以及TC
  • node基础之三:http 模块

    1 导入模块 const http require http 2 创建服务 const server http createServer request response gt 获取请求方法 request method 获取请求 url
  • 阿里云1核1G内存1M宽带可以支持多少IP访问量?

    阿里云1核CPU 1G内存 1M公网宽带云服务器够用吗 1M宽带可以支持多少IP的访问量 来说说1M宽带可以跑多少流量及1核1G服务器配置性能 1核 1G 1M宽带配置能跑多少IP 一般来讲 如果图片不多 每天3000PV是没问题的 如果将
  • 优秀的CobaltStrike插件推荐:编程

    优秀的CobaltStrike插件推荐 编程 CobaltStrike是一款功能强大的渗透测试工具 广泛应用于红队行动和网络安全评估 它的灵活性和可扩展性使得开发者可以编写自己的插件来增强其功能 在这篇文章中 我将向你推荐一些好用的Coba
  • java并发包:重入锁与Condition条件

    本文转载至 http blog csdn net a910626 article details 51900941 重入锁 这里介绍一下synchronized wait notify方法的替代品 或者说是增强版 重入锁 重入锁是可以完全替
  • redis--13--Jedis使用

    redis 13 Jedis使用 代码位置 https gitee com DanShenGuiZu learnDemo tree master redis learn jedis 1 redis conf 修改 允许远程连接 bind 1
  • Java异常-Exception

    一 异常介绍 基本概念 Java语言中 将程序执行中发生的不正常情况称为 异常 注 开发过程中的语法错误和逻辑错误不是异常 执行过程中所发生的异常事件可分为两大类 Error 错误 Java虚拟机无法解决的严重问题 如 JVM系统内部错误
  • 2023-05-18 题目

    2023 05 18 题目 1 String 字符串 String 不是基本数据类型 且是不能被继承的 因为string类被final修饰 源码 public final class String implements java io Se
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • qt实现opengl播放yuv视频

    qt使用opengl播放yuv视频 文章目录 qt使用opengl播放yuv视频 toc 1 实现效果 2 pro文件 3 xvideowidget h 4 xvideowidget cpp 更多精彩内容 个人内容分类汇总 1 实现效果 2
  • VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

    目录 场景复现 定位问题 解决方案 踩过的坑 场景复现 使用VS2022的Native Tools command prompt for 2022工具编译GDAL库时 报 fatal error U1050 PROJ INCLUDE sho
  • RTSP视频边缘计算网关EasyNVR在5G时代有什么运用价值?

    5G和互联网的发展在近几年一直被按下了加速键 物联网正在成为主流 毋庸置疑 云计算为越来越多智能设备的连接提供了基础 给我们生活带来了极大便利 而边缘计算是云计算物联当中的一个关键应用 当我们在考虑云计算带来的数据过度集中 信息传输堵塞问题
  • 2018年最好用的5个python网站开发框架

    python作为解释型脚本语言 是一种通用的编程语言 由于python社区拥有大量的库文件 框架和其他的一些实用工具 我们可以用python完成各种各样的任务 另外 由于python的代码构成和结构就像英语句子一样自然 这种语言的学习曲线也