首页 > 其他分享 >flask 之创建和运行

flask 之创建和运行

时间:2023-12-04 14:37:15浏览次数:30  
标签:__ WSGI 框架 flask 创建 Flask 模板 Werkzeug 运行

一、相关概念

1、python web框架

# python 中的web 框架
    - django:大而全,内置很多
    - flask:小而精,几乎没有内置,都需要用第三方解决
    - fastapi:异步框架,号称效率高
    - Sanic
    - Tornado
    - web.py...
    
# flask 介绍
# 0 Flask是一个用Python编写的Web应用框架。它由Armin Ronacher开发,他领导着一个名为Pocco的国际Python爱好者团队。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目

# 1 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器

# 2 “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握

# 3 默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用

# 4 Flask depends on the Werkzeug WSGI toolkit, the Jinja template engine, and the Click CLI toolkit

2、Werkzeug WSGI-(socket服务端)

  Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等

Werkzeug 是一个综合性 WSGI Web 应用程序库。它最初是 WSGI 应用程序的各种实用程序的简单集合,现已成为最先进的 WSGI 实用程序库之一。

Werkzeug doesn’t enforce any dependencies. It is up to the developer to choose a template engine, database adapter, and even how to handle requests
Werkzeug 不强制执行任何依赖关系。由开发人员选择模板引擎、数据库适配器,甚至如何处理请求

# https://werkzeug.palletsprojects.com/en/3.0.x/
from werkzeug.wrappers import Request, Response
@Request.application
def hello(request):
    return Response('Hello World!')

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, hello)

3、Jinja template engine

Jinja 是一个快速、富有表现力、可扩展的模板引擎。模板中的特殊占位符允许编写类似于 Python 语法的代码。然后向模板传递数据以渲染最终文档

4、Click CLI

# flask 2 版本加入的---》定制命令的工具
	python manage.py init_db
    
# 介绍
# 1 Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It’s the “Command Line Interface Creation Kit”. It’s highly configurable but comes with sensible defaults out of the box
Click 是一个 Python 包,用于以可组合的方式使用尽可能少的代码创建漂亮的命令行界面。它是“命令行界面创建工具包”。它具有高度可配置性,但具有开箱即用的合理默认值

# 2  It aims to make the process of writing command line tools quick and fun while also preventing any frustration caused by the inability to implement an intended CLI API
它的目的是使编写命令行工具的过程变得快速而有趣,同时也防止因无法实现预期的 CLI API 而造成的任何挫败感

# 3  Click in three points:
  arbitrary nesting of commands	
  automatic help page generation
  supports lazy loading of subcommands at runtime 

Click三点: 命令的任意嵌套 自动生成帮助页面 支持运行时延迟加载子命令

install

# pip3 install click
import click
@click.command()
@click.option('--count', default=1, help='打印次数')
@click.option('--name', prompt='你的名字',help='The person to greet.')
def hello(count, name):
    for x in range(count):
        print(f"Hello {name}!")

if __name__ == '__main__':
    hello()

# 1  python3 app.py --count=3
# 2  python3 app.py --help
# 3  python3 app.py --count=3 --name=lqz

二、创建和安装

三、fastapi

四、显示用户小案例

 

标签:__,WSGI,框架,flask,创建,Flask,模板,Werkzeug,运行
From: https://www.cnblogs.com/dgp-zjz/p/17874819.html

相关文章

  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站网址地址:http://175.178.224.187/......
  • sql-2.4创建
    --注释  varchatdefaultcomment engine=innodbengine=innodbengine=innodb auto_increment  CREATETABLEIFNOTEXISTSstudent(`id`INT(8)NOTNULLAUTO_INCREMENTCOMMENT'学号',`pwd`VARCHAR(32)NOTNULLDEFAULT'123456'COMMENT......
  • jfinal2.2在idea用main运行注意事项
    1.用new->projectfromexistssource方式,用maven方式导入2.jfinal2.2使用8.1.8的jettyserver,pom使用compile<dependency><groupId>com.jfinal</groupId><artifactId>jetty-server</artifactId><version>8.1.8</version&g......
  • IDEA2023只能创建jdk17和21的springboot项目解决
    现象:解决:将serverurl修改即可https://start.spring.io--》https://start.aliyun.com可以对比下内容修改成功后就可以创建低版本jdk的springboot项目了......
  • Spin 基于rust 开发的开源运行基于webassembly serverless 工具
    spin是基于rust开发的,可以用来开发以及运行基于webassemblyserverless服务的工具包含的特性提供了周边扩展 默认wasm只提供了基本类型的支持,wasm提供了不少扩展可以方便的支持不同语言的调用(比如网络,数据库访问)提供了快速应该开发的cli提供了服务部署的能力 包含了本地测试......
  • 【让AI女友跟我表白】大白话说Python+Flask入门(四)Flask Sijax的使用
    写在前面先吐槽两句,搞个mysql安装配置弄了4个小时,怎么都是外网无法访问,我靠,我特么也是服了。当然,后来我投降了,明天再说,学什么不是学,娘的,换个方向,状态依然在!Sijax是什么?代表SimpleAjax,它是一个Python/jQuery库,使用jQuery.ajax来进行AJAX请求用的。安装依赖pipinstallflas......
  • Qt程序运行报错
    报错内容PC环境为Ubuntu20.04,Qt版本是Qt5.12.9,AsensingViewer是编译好的程序./AsensingViewer:errorwhileloadingsharedlibraries:libicudata.so.56:cannotopensharedobjectfile:Nosuchfileordirectory问题分析查看程序依赖lddAsensingViewer注意到有个库......
  • 类中创建其他类耦合度高原因
    在面向对象编程中,耦合是指一个类与其他类之间的依赖关系。耦合度高意味着一个类的行为或状态发生变化时,可能会对其他类产生显著的影响,甚至可能需要修改其他类的代码。当在一个类中创建其他类时,这种做法通常被称为嵌套类或内部类。嵌套类能够直接访问其外部类的成员(包括私有成员),因......
  • 记Redux下载后,运行examples/todos时,报错Error: error:0308010C:digital envelope rout
    1、Redux下载下载地址gitclonehttps://github.com/reactjs/redux.git进入examples/todos,下载依赖:npminstall2、问题复现及解决执行命令npmrunstart此时终端报错:Error:error:0308010C:digitalenveloperoutines::unsupported解决方法:打开package.json,修改......
  • 第10次-创建一个在线网站
    第10次-创建一个在线网站这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标创建一个在线网站我的在线网站链接(公网):http://43.139.173.201/......