Python中如何选择Web开发框架?

news/2024/7/19 9:45:13 标签: python, 前端, sqlite, 爬虫, 自动化, 服务器, 数据库

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特性进行选择应用。

image.png

Django

Django是市面上比较大而全的一个系列Web开发框架。Django官网上的介绍是:Django 可以更轻松地以更少的代码更快地构建更好的 Web 应用程序。它提供了一站式的web应用框架解决方案。如实现了缓存、ORM、权限验证、管理后台、插件扩展等多项功能。发展到现在,我更愿意认为Django是一个功能强大的Python CMS系统。

image.png

我们可以通过一个django项目来简单了解下Django项目:

$ pip install django
$ django-admin startproject djdemo                                                   
 cd djdemo                                                                                                                               
$ django-admin startapp djapp                                                   
$ tree -L 3             
.
├── djapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── djdemo
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   └── settings.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Flask

Flask是一个轻量级的Web应用框架,它本身不包含任何模块,却又支持扩展所有需要的内容,秉承着需要多少用多少的理念,是一个不可多得的Python Web框架。而且Flask的开发生态也是欣欣向荣,各种组件均可在社区找到对应的实现工具包。

image.png

当我们创建一个Flask框架应用后,我们可以通过下面的代码来启动一个简单的flask程序:

from flask import Flask        # 导入Flask类
 
app = Flask(__name__)          # 实例化Flask类
 
@app.route('/func')            # 编写视图函数及配置路由
def func():
    return '这是Flask框架'
 
if __name__ == '__main__':     # 启动服务
    app.run()

Pyramid

Pyramid 是一个小巧、快速、实用的开源 Python Web 框架。它使现实世界的 Web 应用程序开发和部署更有趣、更可预测且更高效。它是 Pylons Project 的一部分。采用的授权协议是 BSD-like licensePyramid在国内的知名度并不高,其框架代码量和flask差不多,但是性能却比Flask高很多。

image.png

示例代码:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hello_world(request):
    return Response('Hello World!')

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()

Bottle

Bottle 是一个用于 Python 的快速、简单和轻量级的 WSGI 微型网络框架。它的特点是单文件,代码只使用了Python标准库,而不需要额外依赖其他第三方库。可以说Bottle完美的发挥了“极简主义”风格,好处是显著的,它让我们的项目尽可能的小,但是弊端也是毋庸置疑的,过少的功能支持导致稍微大点的系统就需要自己去开发添加功能。

image.png

示例代码参考:

from bottle import route, request, run
 
@route('/hello', method=['GET', 'POST'])
def dh():     
  return 'hello ' + request.query.str
 
if __name__ == "__main__":
  run(host='0.0.0.0', port=8080)

Tornado

Tornado最初是由FriendFeed开发的非阻塞式Web服务器。由于是非阻塞式服务器,所以它的访问加载速度比较快,Tornado可以支持每秒数千计的连接。对于长轮询、WebSocket等实时性web服务来说,Tornado是一个理想的Web框架。

image.png

示例代码:

import asyncio

import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

async def main():
    app = make_app()
    app.listen(8888)
    await asyncio.Event().wait()

if __name__ == "__main__":
    asyncio.run(main())

Web.py

Web.py是由Reddit联合创始人、RSS规格合作创作人、著名黑客Aaron Swartz开发。Web.py使用基于类的视图,可以轻松创建动态网站和强大的互联网应用程序。它提供 SQL/JDBC 作为其数据库接口,包括对 Google App Engine 的支持,以及为初学者和专家设计的文档齐全、正确且清晰的界面。

**web2py**被定义为一个用于敏捷开发的免费开源Web框架,涉及数据库驱动的Web应用程序。它是用Python编写和编程的。它是一个完整的堆栈框架,由开发人员创建功能齐全的Web应用程序所需的所有必要组件组成。

image.png

Quixote

Quixote 是一个使用 Python 编写基于 Web 的应用程序的框架。它的目标是按此顺序实现灵活性和高性能。Quixote 应用程序的结构往往类似于传统应用程序。格式化网页的逻辑由 Python 类和函数组成。Quixote 不强制分离表示逻辑和 “后端” 逻辑。相反,我们鼓励您使用传统技术。例如,一种解决方案是将表示逻辑放在其自己的子包中。

Quixote使用的是目录式的URL分发规则,使用python来编写模板。PTL模板更适合程序员,但并不适合美工参与前端代码的编写和修改,且Quixote的更新频率较低、社区活跃度不够,所以并不建议在生产环境选用Quixote作为web开发框架。

Sanic

Sanic 是一个 Python 3.6+ web 服务器和web框架,它的编写速度很快,号称 Python 中性能最高的异步 Web 框架。它允许使用python 3.5中添加的 async/await 语法,这使得您的代码不阻塞,速度更快。Sanic参考了Flask的设计思想,这使得习惯于使用Flask开发的程序员能更快的适应Sanic的开发。

image.png

代码示例:

from sanic import Sanic
from sanic.response import json

app = Sanic("hello_example")

@app.route("/")
async def test(request):
  return json({"hello": "world"})

if __name__ == "__main__":
  app.run(host="0.0.0.0", port=8000)

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述


http://www.niftyadmin.cn/n/5212689.html

相关文章

最新Midjourney绘画提示词Prompt教程无需魔法

最新Midjourney绘画提示词Prompt教程无需魔法使用 一、AI绘画工具 SparkAi【无需魔法使用】: SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypes…

Shell编程基础 – 变量(Variables)

Shell编程基础 – 变量(Variables) Shell Scripting Essentials – Variables Bash变量作为shell脚本的重要组成部分,提供了在Unix/Linux命令行界面操作和保存数据的方法。 本文简要介绍Bash Shell脚本变量的基础知识以及应用,包…

Java零基础——Linux篇

1.【熟悉】认识Linux 1.1 什么是操作系统 1.2 现实生活中的操作系统 1.2.1 Win10 1.2.2 Mac 1.2.3 Android(Linux) 1.2.4 iOS(Unix) 1.3 操作系统的发展史 1.3.1 Unix 1965年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的&#xff0c…

FANUC机器人系统配置相关--系统变量介绍

FANUC机器人系统配置相关–系统变量介绍 系统配置页相关变量 1- 停电处理$SEMIPOWERFL = TRUE(有效)/FALSE(无效) 2- 停电处理中的I/O $PWF_IO = 1(不恢复)/2(仿真恢复)/3(解除仿真)/4(恢复所有) 3- 停电处理无效时自动执行的程序 $PWR_NORMAL = ‘’ 4- 停电处理有效时自动…

【编写Java报表程序示例, Apache POI进行Excel导入导出】

【点我-这里送书】 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(…

FFNPEG编译脚本

下面是一个ffmpeg编译脚本: #!/bin/bash set -eu -o pipefail set eu o pipefailFFMPEG_TAGn4.5-dev build_path$1 git_repo"https://github.com/FFmpeg/FFmpeg.git" cache_tool"" sysroot"" c_compiler"gcc" cxx_compile…

学习课题:逐步构建开发播放器【QT5 + FFmpeg6 + SDL2】

目录 一、播放器开发(一):播放器组成大致结构与代码流程设计 二、播放器开发(二):了解FFmpeg与SDL常用对象和函数 三、播放器开发(三):FFmpeg与SDL环境配置 四、播放器开发(四):多线程解复用与解码模块实现 五、播放器开发(五…

数据结构总复习

文章目录 线性表动态分配的顺序存储结构链式存储 线性表 动态分配的顺序存储结构 通过分析代码,我们发现,要注意什么: 要分清你的下标Insert 函数是可以用来没有元素的时候,增加元素的Init(或者Create )函数一般只用来分配空间…