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

python web 开发 - 常用Web框架

python web 开发 -

文章目录

  • python web 开发 -
    • 1、关于Web开发
    • 2、常用Web框架
    • 3、开发案例
      • 3.1. 使用Flask框架创建一个简单的Web应用程序
      • 3.2. 使用tornado框架创建一个简单的Web应用程序
      • 3.3. 使用Django框架创建一个简单的待办事项应用程序
    • 4、总结

1、关于Web开发

Web当然是网络的一部分。

在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:

HTML是一种用来定义网页的文本,会HTML,就可以编写网页;

HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。

看来,HTTP协议是Web开发中,十分重要的协议了。关于HTTP协议的具体知识,推荐一本书《图解HTTP协议》。

因此,在Web应用中,经常在做接受HTTP请求、解析HTTP请求、发送HTTP响应这些苦力活。所以,如果需要自己动手实现,就得接触到TCP连接、HTTP原始请求和响应格式,估计还得阅读不少相关规范。

2、常用Web框架

可是大部分Web应用的开发者并不想把时间耗费在这些苦力活上,因此,WSGI应运而生了。其全称是Web Server Gateway Interface。

WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。

Python也内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。

了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。

但是当HTTP请求、URL多起来的时候,问题又出现了:如何处理URL和处理函数之间的映射关系?

WSGI提供的接口虽然比HTTP接口高级了不少,但和Web App的处理逻辑比,还是比较低级,我们需要在WSGI接口之上能进一步抽象,让我们专注于用一个函数处理一个URL,至于URL到函数的映射,就交给Web框架来做。

因此,Python内置的WSGI服务器当然不足以满足许多人的需要,好在我们还有其他的框架可以选用。

目前运行在WSGI协议之上的Web框架非常多。从个人经验角度而言:轻量级选 Flask 、重量级选Django,当然还有其他的,不过我没有去深入了解,各位可以自行搜索。

因为每个Web框架都不是专注于实现服务器方面的,所以这些WSGI服务器一般也就是开发调试时使用。在生产环境部署的时候,不会简单的使用Web框架自带的服务器。

实际环境使用的WSGI服务器:

Gunicorn: 最流行的大概就是这个了吧。

uwsgi : 因为使用C语言开发,会和底层接触的更好。

Python Web开发可以涵盖多个方面,包括服务器端开发、数据库管理、前端设计和API开发等。在服务器端开发中,常用的Python Web框架有Django、Flask和Bottle、tornado等。这些框架提供了一套工具和结构,使得开发者能够更高效地构建Web应用程序。

在PythonWeb开发中,数据库管理也是一个重要的方面。Python提供了多种数据库连接库,如SQLAlchemy和psycopg2,可以轻松地与主流数据库(如MySQL、PostgreSQL和SQLite)进行交互。

另外,前端设计也是PythonWeb开发中的一个关键部分。Python提供了一些优秀的模板引擎,如Jinja2和Django模板,用于生成动态的HTML页面。

最后,API开发是现代Web应用程序中常见的需求之一。Python提供了一些库,如Flask-RESTful和Django REST framework,用于构建RESTful API。

总结来说,PythonWeb开发是使用Python语言构建Web应用程序的过程。通过选择合适的框架、数据库管理工具、前端设计和API开发库,开发者可以高效地构建出功能强大的Web应用程序。

Flask是一个免费的、开源的Python微型网络框架,旨在帮助开发者构建安全、可扩展和可维护的网络应用。Flask以Werkzeug为基础,使用Jinja2作为模板引擎。

与Django不同,Flask默认不包括ORM、表单验证或任何其他由第三方库提供的功能。Flask在构建时考虑到了扩展,也就是为Flask应用添加功能的Python包。

3、开发案例

3.1. 使用Flask框架创建一个简单的Web应用程序

首先,确保安装了Flask:

pip install Flask

然后,创建一个名为app.py的文件,并写入以下代码:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run()

运行这个Python脚本:

python3 app.py

现在,打开你的网页浏览器,访问 http://127.0.0.1:5000/,你将看到显示“Hello, World!”的页面。这个简单的web应用使用了Flask框架,并定义了一个路由处理根URL的请求。

3.2. 使用tornado框架创建一个简单的Web应用程序

首先,确保安装了 tornado:

pip install tornado

然后,创建一个名为app.py的文件,并写入以下代码:


import tornado.ioloop
import tornado.webclass MainHandle(tornado.web.RequestHandler):def get(self):self.write("hello,world")application = tornado.web.Application([(r"/index", MainHandle),
])if __name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()

运行这个Python脚本:

python3 app.py

现在,打开你的网页浏览器,访问 http://127.0.0.1:8888/index,你将看到显示“Hello, World!”的页面。

3.3. 使用Django框架创建一个简单的待办事项应用程序

首先,在命令行中执行以下命令创建Django项目:

django-admin startproject todoapp

然后,创建一个待办事项应用程序:

cd todoapp
python manage.py startapp tasks

在 tasks 应用程序中,创建一个模型来表示待办事项:

from django.db import modelsclass Task(models.Model):title = models.CharField(max_length=100)completed = models.BooleanField(default=False)def __str__(self):return self.title```bash在 tasks 应用程序的视图文件中,编写视图函数来处理请求:```bash
from django.shortcuts import render
from .models import Taskdef task_list(request):tasks = Task.objects.all()return render(request, 'tasks/task_list.html', {'tasks': tasks})```bash在 tasks 应用程序的URL配置文件中,定义URL路由规则:```bash
from django.urls import path
from . import viewsurlpatterns = [path('', views.task_list, name='task_list'),
]

最后,在 tasks 应用程序中创建一个HTML模板来渲染待办事项列表:

html
<!-- tasks/task_list.html -->
<!DOCTYPE html>
<html>
<head><title>Todo List</title>
</head>
<body><h1>Todo List</h1><ul>{% for task in tasks %}<li>{{ task.title }}</li>{% endfor %}</ul>
</body>
</html>

4、总结

PythonWeb开发框架:Python有多个流行的Web开发框架,包括Django、Flask、Pyramid等。这些框架提供了一系列工具和功能,用于处理路由、模板渲染、数据库集成等。

前端开发:PythonWeb开发通常需要与HTML、CSS和JavaScript等前端技术进行交互。使用模板引擎,如Jinja2,可以将动态数据插入到HTML模板中。

数据库集成:Python提供了多种数据库集成方式,包括使用SQLAlchemy进行关系型数据库操作,或使用MongoDB等NoSQL数据库。这些工具使得与数据库进行交互变得简单。

身份验证和授权:Web应用程序通常需要用户身份验证和授权功能。Python提供了各种库和工具,如Flask-Login和Django-Auth,用于处理用户认证和授权。

RESTful API开发:PythonWeb开发也可以用于构建RESTful API。使用框架如Django Rest Framework和Flask-RESTful,可以轻松创建和管理API端点。

部署和扩展:PythonWeb应用程序可以部署到各种服务器环境中,如Apache、Nginx、Heroku等。还可以使用工具如Gunicorn、uWSGI等来扩展应用程序的性能和可靠性。

总而言之,PythonWeb开发是一种强大而灵活的方式来构建Web应用程序。它提供了丰富的工具和框架,使得开发过程更加简单和高效。无论是构建简单的博客应用程序还是复杂的企业级应用程序,PythonWeb开发都是一个理想的选择。

相关文章:

python web 开发 - 常用Web框架

python web 开发 - 文章目录 python web 开发 -1、关于Web开发2、常用Web框架3、开发案例3.1. 使用Flask框架创建一个简单的Web应用程序3.2. 使用tornado框架创建一个简单的Web应用程序3.3. 使用Django框架创建一个简单的待办事项应用程序 4、总结 1、关于Web开发 Web当然是网…...

设计模式——适配器模式06

适配器模式 通常在已有程序中使用&#xff0c;至少有两个类的接口不兼容时&#xff0c;让相互不兼容的类能很好地合作。例如之前系统 用的Target 接口调用&#xff0c;现在要新增第三方接口Adaptee。如何进行适配&#xff0c;面向客户端提供 调用Target接口方式达到使用Adaptee…...

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会同步回父组件。当父组件中的数据源更改时&#xff0c;与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…...

Web 前端性能优化之八:前端性能检测实践

五、前端性能检测实践 1、常用的检测工具 Lighthouse、Chrome开发者工具中与性能检测相关的一些工具面板、页面加载性能分析工具PageSpeed Insights、专业的性能检测工具WEBPAGETEST等 1、Chrome 任务管理器 通过Chrome任务管理器我们可以查看当前Chrome浏览器中&#xff0…...

安装VMware ESXi虚拟机系统

简介&#xff1a;ESXi是VMware公司开发的一款服务器虚拟化操作系统。它能够在一台物理服务器上运行多个虚拟机&#xff0c;每个虚拟机都可以独立运行操作系统和应用程序&#xff0c;而且对硬件配置要求低&#xff0c;系统运行稳定。 准备工具&#xff1a; 1.8G或者8G以上容…...

Vue3实践之全局请求URL配置和请求参数说明

Vue3实践之全局请求URL配置和请求参数说明 全局请求URL配置 1、首先需要导入router和axios import router from "/router";2、创建app&#xff0c;将router挂载到app上 const app createApp(App) app.use(router).use(elementIcons).mount(#app)3、设置全局请求…...

类和对象—初阶

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 【面试题】 4.2 封装 【面试题】 5.类的作用域 6.类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式 7.3 结构体内存对齐规则 【面试题】…...

【Linux】shell 脚本基础使用

在终端中输入命令可以完成一些常用的操作&#xff0c;但是我们都是一条一条输入命令&#xff0c;比较麻烦&#xff0c;为了解决这个问题&#xff0c;就会涉及到 shell 脚本&#xff0c;它可以将很多条命令放到一个文件里面&#xff0c;然后直接运行这个文件即可。 shell 脚本类…...

nfs部署--相关记录

以下是在 CentOS 8 中将 10.40.111.41 上的 /nfsdata 目录通过 NFS 共享到 10.40.111.43 和 10.40.111.45 的 /nfsdata 目录的详细步骤&#xff1a; 在 10.40.111.41 上操作&#xff1a; 安装并配置 NFS 服务器&#xff1a; a. 安装 NFS 服务器软件包&#xff1a; sudo dnf in…...

java国产化云HIS基层医院系统源码 SaaS模式

目录 ​ 云HIS开发环境 功能模块介绍&#xff1a; 1、门诊模块 2、住院模块 3、药房、药库模块 ​编辑 4、电子病历模块 5、统计报表模块 6、系统管理模块 系统优势 云his之电子病历子系统功能 云 his 系统是运用云计算、大数据、物联网等新兴信息技术&#xff0c;按…...

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件

部署 部署说明 部署之前必须注意的几点事项,该教程不一定适合所有用户: 本教程主要是使用 docker 部署,宝塔用户或宿主机直接安装的用户请直接参考官网教程.本教程是独立部署 epusdt,使用独立的mysql和redis,与dujiaoka项目分开. 在研究的过程中发现 epusdt 也需要用到 mys…...

数据结构排序之冒泡、快速、插入、选择、堆、归并等排序及时间,空间复杂度等(超详解,绝对能满足你的需求,并能学到很多有用知识)

在本文章开始之前给大家介绍个网站,可以通过下面动画网址来理解 ,(国外的网站帮助学习数据结构很多知识,可以翻译下来,在搜索框搜索相应的排序算法进行动画演示,非常好用。)​​​https://www.cs.usfca.edu/~galles/visualization/https://www.cs.usfca.edu/~galles/vis…...

如何在windows环境和linux环境运行jar包

功能:实现对字符串小写转大写 java代码如下: package a_od_test;import java.util.Locale; /* 实现小写转大写 打jar包 分别在windows环境和liunx环境运行*/ public class Main28_To_Upper {public static void main(String[] args) {if (args.length 1) {System.out.printl…...

2602B吉时利2602B数字源表

181/2461/8938产品概述&#xff1a; 2600B系列系统源表SMU仪器是业界领先的电流/电压源和测量解决方案&#xff0c;采用吉时利第三代SMU技术制造。2600B系列提供单通道和双通道型号&#xff0c;将精密电源、真电流源、6-1/2位数字多用表、任意波形发生器、脉冲发生器和电子负载…...

Linux——fork复制进程

1)shell: 在计算机科学中&#xff0c;Shell俗称壳&#xff08;用来区别于核&#xff09;&#xff0c;是指“为使用者提供操作界面”的软件&#xff08;command interpreter&#xff0c;命令解析器&#xff09;。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令&…...

李廉洋:4.10黄金原油晚间走势最新分析及策略。

鉴于美联储官员对1月和2月通胀数据反应不足&#xff0c;3月通胀数据过热可能导致其反应过度的风险更大。美联储试图避免根据一两个数据点来制定政策&#xff0c;但今年迄今为止经济活动的韧性意味着&#xff0c;在年中降息的理由取决于通胀是否恢复自去年下半年以来的稳步下降趋…...

【头歌-Python】字符串自学引导

禁止转载&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_45801887/article/details/137517279 参考教程&#xff1a;B站视频讲解——https://space.bilibili.com/3546616042621301 如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 字符串自学引导 …...

44-技术演进(下):软件架构和应用生命周期技术演进之路

应用、系统资源、应用生命周期管理这 3 个维度&#xff0c;构成了我们对云的所有诉求。 我会介绍下应用维度和应用生命周期管理维度的技术演进。 我们就先来看下软件架构的演进之路。 软件架构的演进 软件架构技术演进如下图所示&#xff1a; 单体架构 在单体架构中&#xff…...

【C++】C++中的list

一、介绍 官方给的 list的文档介绍 简单来说就是&#xff1a; list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中…...

uniapp:Hbuilder没有检测到设备请插入设备或启动模拟器的问题解决

问题 使用模拟器调试运行项目时&#xff0c;出现以下提示&#xff0c;“没有检测到设备&#xff0c;请插入设备或启动模拟器后点击刷新再试”。排查了一天最终找到原因。 解决 已确认模拟器是已经正常启动&#xff0c;并且Hbuilder设置中的adb路径和端口都配置没有问题&#…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...