目录
flask
使用flask
路由及变量规则
反向URL
获取HTTP请求数据
示例:登陆跳转
首页 后端开发 Python教程 python中Web框架(Flask)的详解(代码示例)

python中Web框架(Flask)的详解(代码示例)

Oct 24, 2018 pm 05:26 PM
html5 python

flask

flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
登录后复制

使用flask

当你编写一个函数时,要想每个人都可以使用,需要用到flask来实现这个目标。

  1. 导入falsk.Flask类

  2. 实例化一个Flask对象

  3. 绑定路由

  4. 运行flask应用

# 1. 导入Flask类;
from flask import  Flask

# 2. 实例化一个Flask对象;
#     __name__是模块的名称或者包的名称
#     作用: 根据这个参数确定flask应用的路径, 从而快速查找模板和html文件的默认路径;
#     模块就是python文件; 包就是目录(跟普通目录多加一个__init__.py);
#
app = Flask(__name__)

# 3-1.基本路由:通过路由绑定一个视图函数
#   @app.route('/'): 告诉Flask哪个URL才能出发对应的函数, 又称为路由;
#   对应定义了一个视图函数, 也就是返回给用户浏览器显示的内容;
@app.route('/')
def index():
    return  "<h1>hello world</h1>"

@app.route('/login/')
def login():
    return  "login"

# 4. 运行Flask应用, 可以指定ip和端口;
# '0.0.0.0' 所有的IP都可以访问到;
app.run('0.0.0.0', 9000)
登录后复制

1821406118-5bd03371ed5a8_articlex.png

1875779253-5bd033d764b73_articlex.png

路由及变量规则

在flask框架中,路由表示用户请求的URL找出其对应的处理函数
常见路由的规则

  1. url的一部分可以标记为变量<变量名>

  2. flask中路由里面的变量常见类型:

         int, string, float, path, uuid
    登录后复制
from flask import Flask, request

app = Flask(__name__)
@app.route('/<int:id>/comments/')
def comment1(id):
    return "Comment id: %s" %(id)

@app.route('/welcome/<string:user>/')
def welcome(user):
    app.logger.debug('this is a debug')
    app.logger.warning('this is a warn')
    return user + "用户,欢迎来到SheenStar的主页"

# 特殊的url地址: http://www.baidu.com/query?id=13&name=clotho
@app.route('/query')
def query():
    # 获取url地址里面key值对应的value值;
    id = request.args.get('id')
    name = request.args.get('name')
    return "id: %s, name: %s" %(id, name)
app.run()
登录后复制

4087134239-5bd0346fd6b40_articlex.png
4087134239-5bd0346fd6b40_articlex.png

4039084919-5bd034d56b02a_articlex.png

反向URL

获取HTTP请求数据

客户端通过URL访问服务端程序,会发送给服务端两类消息,一类是HTTP请求头,另一类是请求数据。

1. 常见HTTP请求方法:
GET: 1). 获取信息 2). 提交的信息会展示在url: http://www.wewtos.org/login?user=sheen&passwd=star
POST:1). 提交信息, 不在url里面展示, 有利于数据的安全性;

2. 默认路由接受的请求方法为_____get____?
如何指定接收多个HTTP请求方法?
路由: @app.route('/login/', methods=['GET', 'POST'])
视图函数: def login():

3. 如何判断用户请求的HTTP方法?   request.method
 如何获取用户POST请求提交的表单数据? request.form['user']
 
4. 模板渲染(jinja2):
why?    python中生成html不易修改与维护, 所以将html的内容独立到templates目录中;
how?
1). 去当前项目目录下寻找templtes是否存在?再去判断templates目录下是否有login.html文件?
2). 读取这个login.html文件的内容, 作为render_template的返回值;
3). 最终返回给用户浏览器;
render_template('login.html')

5. 重定向和错误?
redirect
return  render_template('login.html', message="用户名或者密码错误")
登录后复制

示例:登陆跳转

#这里的index.html、login.html、404.html是需要自己提前写好的可访问网页
#所有的模板需要放在templates目录下
from flask import Flask, request, render_template, redirect, url_for, abort

app = Flask(__name__)

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

@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        print(request.form)
        # 1. 如何获取到用户提交的信息呢?
        user = request.form['user']
        passwd = request.form['passwd']

        # 2. 判断用户名和密码是否正确
        if user == 'root' and passwd =='sheen':
            # 如果登陆成功, 跳转到主页;
            return redirect(url_for('index'))
        else:
            # 如果登陆失败, 重新登陆;
            return  render_template('login.html', message="用户名或者密码错误")
    else:
        # 用户是GET请求, 返回登陆的html页面
        # 1. 读取login.html文件的内容
        # 2. 将读取的内容返回给用户界面
        return render_template('login.html')

# 404异常处理: 类似于捕获异常
@app.errorhandler(404)
def not_found(e):
    return  render_template('404.html')

# 抛出异常
@app.route('/user/<int:user_id>/')
def user(user_id):
    if 0<int(user_id)<=100:
        return  "欢迎访问: %s" %(user_id)
    else:
        abort(404)

app.run()
登录后复制

3928398265-5bd035088f408_articlex.png

1466852155-5bd0353bb4ca2_articlex.png

以上是python中Web框架(Flask)的详解(代码示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

CentOS上如何进行PyTorch模型训练 CentOS上如何进行PyTorch模型训练 Apr 14, 2025 pm 03:03 PM

在CentOS系统上高效训练PyTorch模型,需要分步骤进行,本文将提供详细指南。一、环境准备:Python及依赖项安装:CentOS系统通常预装Python,但版本可能较旧。建议使用yum或dnf安装Python3并升级pip:sudoyumupdatepython3(或sudodnfupdatepython3),pip3install--upgradepip。CUDA与cuDNN(GPU加速):如果使用NVIDIAGPU,需安装CUDATool

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

CentOS上PyTorch的GPU支持情况如何 CentOS上PyTorch的GPU支持情况如何 Apr 14, 2025 pm 06:48 PM

在CentOS系统上启用PyTorchGPU加速,需要安装CUDA、cuDNN以及PyTorch的GPU版本。以下步骤将引导您完成这一过程:CUDA和cuDNN安装确定CUDA版本兼容性:使用nvidia-smi命令查看您的NVIDIA显卡支持的CUDA版本。例如,您的MX450显卡可能支持CUDA11.1或更高版本。下载并安装CUDAToolkit:访问NVIDIACUDAToolkit官网,根据您显卡支持的最高CUDA版本下载并安装相应的版本。安装cuDNN库:前

CentOS下PyTorch版本怎么选 CentOS下PyTorch版本怎么选 Apr 14, 2025 pm 02:51 PM

在CentOS下选择PyTorch版本时,需要考虑以下几个关键因素:1.CUDA版本兼容性GPU支持:如果你有NVIDIAGPU并且希望利用GPU加速,需要选择支持相应CUDA版本的PyTorch。可以通过运行nvidia-smi命令查看你的显卡支持的CUDA版本。CPU版本:如果没有GPU或不想使用GPU,可以选择CPU版本的PyTorch。2.Python版本PyTorch

minio安装centos兼容性 minio安装centos兼容性 Apr 14, 2025 pm 05:45 PM

MinIO对象存储:CentOS系统下的高性能部署MinIO是一款基于Go语言开发的高性能、分布式对象存储系统,与AmazonS3兼容。它支持多种客户端语言,包括Java、Python、JavaScript和Go。本文将简要介绍MinIO在CentOS系统上的安装和兼容性。CentOS版本兼容性MinIO已在多个CentOS版本上得到验证,包括但不限于:CentOS7.9:提供完整的安装指南,涵盖集群配置、环境准备、配置文件设置、磁盘分区以及MinI

centos如何安装nginx centos如何安装nginx Apr 14, 2025 pm 08:06 PM

CentOS 安装 Nginx 需要遵循以下步骤:安装依赖包,如开发工具、pcre-devel 和 openssl-devel。下载 Nginx 源码包,解压后编译安装,并指定安装路径为 /usr/local/nginx。创建 Nginx 用户和用户组,并设置权限。修改配置文件 nginx.conf,配置监听端口和域名/IP 地址。启动 Nginx 服务。需要注意常见的错误,如依赖问题、端口冲突和配置文件错误。性能优化需要根据具体情况调整,如开启缓存和调整 worker 进程数量。

See all articles