Python全栈 Web(Flask框架、安装、应用)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发
Flask  轻量级WEB框架

静态网页:
不能与服务器交互的网页都是静态网页
动态网页:
能够与服务器进行交互的网页

WEB:浏览器 网页(前端三剑客)
服务器:
能够给用户提供服务的机器就是服务器
硬件来说就是 一台主机
还要配备一个能够接受用户请求并给出响 应用程序
APACHE
TOMCAT
IIS(Internet Information Service)
Nginx(Python用的较多)
作用:
存储WEB所需要的信息
所有的服务器都能够处理用户请求( request)并作出回应( response
能够执行服务器端的程序
具备一定的安全性功能
框架:
是一种为了解决开放性问题而存在的一种结构
框架本身也提供了一些基本功能,
我们只需要在自己的基础功能上搭建属于自己的操作即可
Python的WEB框架:
Flask
Django
Tornado
Webpy

Flask框架:
什么是Flask?
Flask是一个基于Python并且依赖于jinja2模板引擎和
werkzeug WSGI(Web server Gateway Interface)
外部服务网关接口  服务的一个微型框架
Flask的框架模式:
Python的框架基本都是MTV的
M:Models  模型层
负责数据库建模 与数据库打交道
T:Templates 模板层
用于处理用户显示的网页内容
V:Views:视图层
用于处理与用户交互的部分  处理用户的请求并给出
响应内容的一段逻辑程序
而其他语言框架基本都是MVC:
M:Models 模型层
同上 
V:Wiews  视图层
视图层 用处处理用户显示的内容的  等同于MTV的 T
C:Controller:控制器
处理用户的请求与响应 等同于MTV的 V



安装:
在线安装
sudo pip3 install flask
离线安装:
9个依赖包  装到吐血身亡~   还是算了~~

                Pycharm安装:
      


 



pip3可以下载安装包:
pip3 download 包名
验证安装:
import flask
版本信息:flask.__version__  



安装好以后初始化项目:

打开终端


Paris@Python:~$ mkdir Flask
Paris@Python:~$ cd Flask/
Paris@Python:~/Flask$ mkdir FlaskProject
Paris@Python:~/Flask$ cd FlaskProject/
Paris@Python:~/Flask/FlaskProject$ touch run.py
Paris@Python:~/Flask/FlaskProject$ mkdir templates



创建好文件后用Pycharm打开

 

 




运行应用


from flask import Flask

app = Flask(__name__)
# 将主程序构建为 Flask应用命名为app 
# 以便于处理用户request 给出response

@app.route("/")
def index():
    return "这是首页  Hello World!"
    # 配置路由
    # 通过应用装饰器函数来构建视图函数  视图函数必须有return
    # /表示网站的首页  根路径

if __name__ == "__main__":
    app.run(debug=True, port=8888)
# 运行app应用 并开启调试模式 
# 默认端口为5000 自定义端口为8888  可以省略




一个Flask框架就搭建好了





Flask路由(route):
什么是路由?
客户端发送给WEB服务器  WEB服务器再将请求发送给Flask程序实例
程序 实例需要知道每个url请求要运行哪些代码,所以需要建立一个
url 到 python 函数的映射,处理url和函数之间的关系的程序就是 
路由在Flask中,路由是通过 @app.route 装饰器来表示的
路由:

@app.route('/login')
def login():
    return '这是登录页面'

@app.route('/register')
def register():
    return '这是注册页面'

基本参数的路由:

# 定义带一个参数的路由
@app.route('/show1/<name>')
def show1(name):
    return "<h1>姓名为:%s</h1>" % name

多参数路由:

# 定义带两个参数的路由  参数可以更多
@app.route('/show2/<name>/<age>')
def show2(name,age):
    return "<h1>姓名为:%s,年龄为:%s" % (name,age)

指定参数数据类型路由:

# 定义带两个参数的路由,其中,age参数指定为整数
@app.route('/show3/<name>/<int:age>')
def show3(name,age):
    # age : 为 整型,并非 字符串
    return "传递进来的参数是name:%s,age:%d" % (name,age)

Flask中所有支持的类型转换器:
<int:age>:
类型转换器指定类型  表示age参数是一个整数  数据类型 

不写 默认字符串类型  不能有“/” 代表一个路径
int:  整型
float:浮点型
path: 字符串型  可以有斜杠

@app.route("/show/<name>/<int:age>")
@app.route("/show/<name>/<int:age>/<float:score>")
@app.route("show/<path:file/html/show>")


多URL的路由匹配:
在一个视图函数上可以添加多个装饰器来指定rul路由的匹配规则
一个视图处理函数中设置多个url路由规则

# 多 URL 路由匹配  可以一直网上写~
@app.route('/')
@app.route('/index')
@app.route('/<int:page>')
@app.route('/index/<int:page>')
def index(page=None):
    if page is None:
        page = 1
    return "当前页数为:%d" % page



路由设置HTTP请求方法
路由规则允许设置对应的请求方法
只有将匹配上请求方法路径交给视图函数处理去执行

@app.route('/post',methods=['POST','GET'])
def post():
    return '这是post请求方式进来的'


只有POST请求方式允许访问  localhost:5000/post

URL 的解析
正向解析:
程序自动解析 根据@app.route() 装饰器中的访问路径来处理函数
反向解析:
通过视图处理函数的名称自动生成视图处理函数的访问路径
Flask中提供了url_for(fun, ...)函数  用于反向解析
参数:
fun:指向函数名称(通过app.route()装饰后的函数)
后续:对应要构建的url上的变量


@app.route('/url')
def url_views():
    # 将 login() 反向解析访问地址
    logUrl = url_for('login')
    resp = "<a href='" + logUrl + "'>我要登录</a>"
    return resp

    # 将 show2(name,age) 反向解析访问地址
    url = url_for('show2',name = 'Paris',age = 18)
    print(url)
    resp = "<a href='" + url + "'>" + url + "</a>"   直接解析为超链接
    return resp


特殊:
url_for("static", filename="style.css")
静态文件反向解析
模板:
什么是模板?
还是一个包含响应文本的文件 通常也是HTMl文件
该文件中可以包含“占位变量” 来表示动态的内容
具体值  只有在请求中才能获取  "占位变量"最后会被真实的值替换
模板最终也会被解析成响应的字符串  这一过程也称为"渲染"

Flask实际上是使用 Jinja2 强大的模板引擎
模板的设置:
默认情况下 Flask会在程序文件夹中的 templates 子文件夹中自动寻找模板
需要收动创建 templates 子文件夹  里面放HTML文件


渲染模板:
在视图函数中  通过 return render_tepmlate() 将模板渲染成字符串再响应给客户端

render_template("xxx.html", arg1=value1, ...):
参数1:
xxx.html  要渲染给客户端的HTML模板文件
参数2~n:
可以省略   要传递给模板动态显示的变量占位符 
返回值:
字符串

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    str = render_template('index.html')
    print(str)
    return str

if __name__ == '__main__':
    app.run(debug=True,port=5555)


相关文章
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
947 77
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
733 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
11月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
579 1
|
11月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
373 1
|
12月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
456 7
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
426 19
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
698 17
使用Web浏览器访问UE应用的最佳实践
|
7月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
601 4

推荐镜像

更多