python web框架基础

文章目录

    • 1. Web框架简介
      • 1.1 MVC
      • 1.2 模板引擎
    • 2. 常用 Python Web 框架
    • 3. 虚拟环境
    • 4. 部署方式

learning from 《python web开发从入门到精通》

1. Web框架简介

简化 web 开发的软件框架

一般都支持:管理路由,支持数据库,MVC,ORM,模板引擎,管理会话和Cookies

1.1 MVC

  • Model View Controller 一种设计模式
  • Model 封装数据和处理方法
  • View 是数据的 HTML 展现
  • Controller 负责响应请求,协调 Model 和 View

1.2 模板引擎

使用模板引擎可以在 HTML 页面中使用变量 如 <title>{{title}}</title>

  • {{}} 变量会被替换成相应的值,使得界面与数据分离,业务代码与逻辑代码分离,提高复用和开发效率

2. 常用 Python Web 框架

只要遵守 WSGI(服务器网管接口) 规则,就可以自主开发 Web 框架

  • Django 最广泛,社区最大,最多的包,但是系统耦合度高,替换内置功能麻烦,学习曲线陡峭
  • Flask 轻量级,容易扩展
  • Tornado 不单单是框架,还是 web 服务器,为了解决实时服务诞生的(使用了异步非阻塞IO),运行速度非常快
  • FastAPI 现代的高性能框架,使用了类型提示,能减少开发错误,自动生成 API 文档

3. 虚拟环境

不同的应用程序使用不同的环境依赖,避免升级后不兼容

  • virtualenv
  • conda
  • pip 导出环境包的明细 pip freeze > requirements.txt
    新环境下一次性安装 pip install -r requirements.txt

pip 加速:-i 清华源地址 或者 配置 pip.ini 文件,添加源地址,自行网上搜索

4. 部署方式

WSGI

  • 接受请求的服务器 + 处理请求的 APP

Gunicorn

  • 常用的 WSGI Server 容器 有 GunicornuWSGI,Gunicorn 简单,占用资源少,更快

Nginx

  • 是一个 web 服务器,反向代理工具,通常来部署静态文件
  • 可以直接处理静态文件请求,绕过APP服务器,避免占用运算资源,能缓存静态资源,提速
  • 抗并发能力,缓存住瞬时高并发请求,然后慢慢在后端处理
  • 多台服务器,可以提供负载均衡反向代理

Supervisor

  • 进程管理工具,看守进程,异常退出后,立即启动进程


购买云服务器 https://cloud.tencent.com/product/cvm阿里,腾讯,百度,华为都可以


pip install gunicorn
gunicorn -w 3 -b 0.0.0.0:9100 run:app
w进程数,b绑定主机和端口,run是 run.py 文件,app 是py文件里的定义应用

也可以 -c 指定配置文件 如 xxxconf.py


Nginx
https://www.runoob.com/linux/nginx-install-setup.html
windows下安装以及配置nginx


pip install supervisor

supervisor 安装、配置、常用命令


使用云服务器玩一玩:

创建虚拟环境
编写 run_flask_hello_world.py

from flask import Flaskapp=Flask(__name__)
@app.route('/')
def index():return "hello michael!"if __name__ == "__main__":app.run()
gunicorn -w 1 -b 0.0.0.0:9100 run_flask_hello_world:app
[2021-12-03 12:05:05 +0800] [23677] [INFO] Starting gunicorn 20.1.0
[2021-12-03 12:05:05 +0800] [23677] [INFO] Listening at: http://0.0.0.0:9100 (23677)
[2021-12-03 12:05:05 +0800] [23677] [INFO] Using worker: sync
[2021-12-03 12:05:05 +0800] [23679] [INFO] Booting worker with pid: 23679

在公网上可以访问
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导Excel数据到Oracle的脚本,Oracle使用TOAD实现导入导出Excel数据

在Oracle应用程序的开发过程中&#xff0c;访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作&#xff0c;对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad。在Toad的新版本中&#xff0c;还加入了DBA模块&a…

Chapter 14 Exercises Problems

转载于:https://www.cnblogs.com/momoko/p/4937730.html

FastAPI 结合 SQLAlchemy 操作 MySQL 数据库

文章目录1. 安装 SQLAlchemy2. 创建数据库3. SQLAlchemy 连接 MySQL4. 创建数据模型5. 创建 Pydantic 模型6. crud 工具7. main函数learning from 《python web开发从入门到精通》 1. 安装 SQLAlchemy pip install sqlalchemy 2. 创建数据库 mysql -u root -p 命令行登录 M…

oracle 打开 ctl,Oracle 19c 随系统systemctl启动数据库

Oracle 19c 随系统systemctl启动数据库一、 修改oratab文件[rootadg19c ~]# grep woo /etc/oratabwoo:/DBSoft/oracle/product/19.3/dbhome_1:N[rootadg19c ~]# sed -i s/:N/:Y/ /etc/oratab[rootadg19c ~]# grep woo /etc/oratabwoo:/DBSoft/oracle/product/19.3/dbhome_1:Y二…

调用exe文件(一般处理登陆安全窗口)+睡眠等待(--------------------)

在测试basic认证的时候&#xff0c;处理windows弹窗的问题时&#xff0c;是用autoit进行处理的&#xff0c;最终转成一个.exe文件&#xff0c;然后再用java调用该exe文件。 1、调用自己打包的exe文件&#xff08;如下下例子&#xff09; package com.gmsd.gommon; import java.…

LeetCode 2094. 找出 3 位偶数

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 digits &#xff0c;其中每个元素是一个数字&#xff08;0 - 9&#xff09;。数组中可能存在重复元素。 你需要找出 所有 满足下述条件且 互不相同 的整数&#xff1a; 该整数由 digits 中的三个元素按 任意 顺序 依次连接 …

oracle追踪触发器语句,Oracle中怎样通过触发器来追踪用户的活动?

从Oracle8i开始&#xff0c;Oracle引入了特殊的触发器&#xff0c;这些触发器并不是和特殊的DML事件相关联的(DML事件&#xff0c;如&#xff0c;INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器&#xff0c;DDL触发器和最终用户登陆/注销触发器。当Oracle提…

TotoiseSVN 使用参考文章

SVN使用教程总结 http://www.cnblogs.com/armyfai/p/3985660.html TotoiseSVN的基本使用方法 http://www.cnblogs.com/xilentz/archive/2010/05/06/1728945.html windows svn server and client and plugin的下载地址 https://www.visualsvn.com/downloads/ VisualSVN Server |…

oracle oci.dll的作用,ASP.NET bin目录中的Oracle oci.dll无法删除/不起作用

我按照这里的指示&#xff1a;http://splinter.com.au/blog/?p156尝试使用较新版本的ODP.NET而不安装Oracle 11g客户端.到目前为止,除了重启IIS之外,我都遵循了一切.然而,这引起了一些问题,我真的很好奇为什么.如果我尝试使用ODP.NET,我遇到了Oracle连接尝试连接时抛出的空白异…

POJ 3041 Asteroids (对偶性,二分图匹配)

题目&#xff1a;POJ 3041 Asteroids http://poj.org/problem?id3041 分析&#xff1a; 把位置下标看出一条边&#xff0c;这显然是一个二分图最小顶点覆盖的问题&#xff0c;Hungary就好。 挑战&#xff1a; 输出一组可行解。构造&#xff0c;已知二分图的两个点集U和V&#…

LeetCode 2095. 删除链表的中间节点(快慢指针)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head 。删除 链表的 中间节点 &#xff0c;并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点&#xff08;下标从 0 开始&#xff09;&#xff0c;其中 ⌊x⌋ 表示小于或等于 x…

linux 普通用户间切换,Linux中管理员用户与普通用户之间的切换

jsp页面添加一个集合数组到action(用序列化提交)页面的js //点击a标签增加删除 var i0; $("#a").on("click",function(){ var $newtr $("& ...JS 随机数function GetRandomNum(Min,Max){ var Range Max - Min; var Rand Math.random(); return…

sql 函数 总结

聚合函数 Avg(numeric_expr&#xff09;返回integer、decimal、money、float---返回组中各值的平均值 Count(*|column_name|distinct column_name) 返回integer---返回表中的记录数|返回指定列的数目|返回指定列的不同值的数目 Count_big(*|column_name|distinct column_name…

LeetCode 2096. 从二叉树一个节点到另一个节点每一步的方向(最小公共祖先)

文章目录1. 题目2. 解题1. 题目 给你一棵 二叉树 的根节点 root &#xff0c;这棵二叉树总共有 n 个节点。 每个节点的值为 1 到 n 中的一个整数&#xff0c;且互不相同。 给你一个整数 startValue &#xff0c;表示起点节点 s 的值&#xff0c;和另一个不同的整数 destValue …

linux下实现内存监视,shell脚本来监视Linux上的内存使用情况

shell脚本来监视Linux上的内存使用情况监视所有内容&#xff0c;例如CPU利用率&#xff0c;内存利用率&#xff0c;交换利用率&#xff0c;磁盘空间利用率等等。如果您只有很少的系统并且要监视它们&#xff0c;那么编写一个小的Shell脚本可以使您的任务非常容易。我们添加了两…

大数据的学习历程

大数据scala语言不仅可以在函数中嵌套函数&#xff0c;还可以定义偏函数。 def sum(a :Int,b:Int,c:Int) abcval pld sum _println(pld(1,2,3))println(pld.apply(1, 2, 3))val ped sum(1,_:Int,3)println(ped(2))println(ped.apply(2))val add (x : Int)> x2println(ad…

LeetCode 2097. 合法重新排列数对(欧拉路径)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二维整数数组 pairs &#xff0c;其中 pairs[i] [starti, endi] 。如果 pairs 的一个重新排列&#xff0c;满足对每一个下标 i &#xff08; 1 < i < pairs.length &#xff09;都有 endi-1 starti &#xff0c…

linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解

如果你的IPTABLES基础知识还不了解,建议先去看看。我们来配置一个filter表的防火墙1、查看本机关于IPTABLES的设置情况[roottp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destina…

《如何在大学里脱颖而出(How to Win at College)》读书笔记

《如何在大学里脱颖而出(How to Win at College)》读书笔记 图书简介 中文版&#xff1a; 英文版&#xff1a; 作者卡尔纽波特&#xff08;Cal Newport&#xff09;于 2004 年6月以优等生荣誉学会会员身份毕业于达特茅斯学院。曾在《华尔街日报》的学报和《今日商务》等杂志上发…

LeetCode 2099. 找到和最大的长度为 K 的子序列

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。 你需要找到 nums 中长度为 k 的 子序列 &#xff0c;且这个子序列的 和最大 。 请你返回 任意 一个长度为 k 的整数子序列。 子序列 定义为从一个数组里删除一些元素后&#xff0c;不改变剩下元素的顺…