Flask关于模板(url_for,redirect,render_template)等操作

使用Python Flask的render_template方法进行网页模板渲染 使用render_template方法,我们能够将数据动态地插入到HTML模板中,从而生成最终的网页响应。在index函数中,我们定义了一些要传递到模板中的数据,例如姓名、年龄和爱好。最后,我们调用了render_template方法来渲染名为’index.html’的模板,并将数据作为参数传递给模板。index函数中的render_template方法将会根据提供的模板文件和数据,生成最终的HTML响应。其中一个重要的功能是模板渲染,它允许我们将动态数据插入到HTML模板中并生成最终的网页。 阅读详情

标题1、url_for()的使用

route()去设置访问函数的路由,那能否通过函数去得到访问的路径呢,答案是可以,那么就是通过url_for()去解析。比如下面有bookList()和bookList1(id)两个函数,在print_hi()中可以输出前面两个函数的route

from flask import Flask, url_for,jsonify
@app.route('/')
def print_hi():
    '''
    通过使用url_for可以通过传递的参数1函数名称得到访问该函数的route,如果函数还有其他参数,那么也需要拼接在后面
    '''
    print(url_for('bookList'))
    print(url_for('bookList1',id=3))
    return helloWorld


booklists=[
        {"id":1,"name":"book1"},
        {"id": 2, "name": "book2"},
        {"id": 3, "name": "book3"},
        {"id": 4, "name": "book4"}
    ]
@app.route('/cloudy/bookList/')
def bookList():
    return jsonify(booklists)


@app.route('/cloudy/bookList/<int:id>/')
def bookList1(id):
    for book in booklists:
        print("book:%s" % book)
        if id == book['id']:
            print("book:%s" % book['id'])
            return book
    return f"我是第{id}个"

2、redirect的使用

redirect表示重定向,重定向有分两种,目前只需要了解暂时重定向,这也是flask的默认重定向方式。比如下面这个功能,当启动项目在浏览器中输入http://127.0.0.1:8888/cloudy/detail/2时候,这时候是不能得到bookname的值,这样就会执行到redirect去。如果在浏览器中输入http://127.0.0.1:8888/cloudy/detail/2?name=‘curry’,那么可以获取到bookname就会执行else语句
重定向需要传递第一个参数表示重定向的路由,第二个参数表示重定向的方式code
‘’’
重定向:使用redirect(),接受2个参数,第一个参数location重定向的路由地址,这时候就可以通过url_for()函数得到路由,
第二个参数code表示重定向方式,永久重定向301还是暂时重定向302,默认302

booklists=[
        {"id":1,"name":"book1"},
        {"id": 2, "name": "book2"},
        {"id": 3, "name": "book3"},
        {"id": 4, "name": "book4"}
    ]
from flask import Flask, url_for, request,redirect
@app.route('/cloudy/detail/<int:id>')
def detail(id):
    # url上面传参可以加入?key=value表示传参,可以通过下面方式获取那个参数
    bookname = request.args.get('name')
    print("bookname: %s"%bookname)
    if not bookname:
        return redirect(url_for('bookList'))
    else:
        return "我是谁"

3、render_template()的使用

render_template表示重定向到哪html文件,根据下面案例,我们可以得到传递可以有3种类型,第一种不传递任何参数。第二种传递一个变量参数。第三种传递跟python一样的**args

from flask import Flask,request,render_template
@app.route('/login/')
def login():
    tokenName = request.args.get('name')
    if tokenName:
        return "已经登录"
    else:
        # 不用往模板传递参数
        # return render_template('login.html')
        # 往模板传递一个固定值参数
        # return render_template('login.html',name='jack')
        # 往模板传递多个参数
        args = {
            'name':'curry',
            "email":"curry@gmail.com",
            "books":["book1",'book2'],
            "itemm":{"class":"small","nums":6}
        }
        return render_template('login.html', **args)

在templats中有如下这样一个html文件,就是前面的重定向模板,在模板中可以通过{{}}来获取传递的参数内容

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <h3>欢迎光临</h3>
    <p>这是登录页,请 {{name}} 使用 {{email}} 登录</p>
</div>
</body>
</html>

4、html模板中的一些操作内容,比如过滤器,for,if等

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <p>过滤器的使用,比如求{{name}}长度为: {{name|length}}</p>
    <p>再比如过滤器转大写,{{name}}的大写是: {{name|upper}}。具体需要使用哪些过滤器时候去查就好了</p>
    <P>格式化字符过滤器{{name|format}}</P>
    <p>如果开启了全局转义,那么safe过滤器会将变量关掉转义{{name|safe}}</p>
    <p>转义字符,会将<、>等符号转义成HTML中的符号{{name|escape}}</p>
    <h2>for循环</h2>
    <ul>
        {% for book in books %}
            <li>{{ book }}</li>
        {% endfor %}
    </ul>
    <h2>字典遍历</h2>
    <dl>
       {% for key,value in itemm.items() %}
                {{ key|e }}:{{ value|e }}
        {% endfor %}
    </dl>
    <h2>if判断</h2>
    {% if name == 'curry' %}
        <p>我是{{ name }}</p>
    {% endif %}
</div>
</body>
</html>

5、include的作用

include是表示导入模板,比如一个html页面的顶部和底部一些div模块都是固定的,那么就可以很方便的使用include去处理。
下面如果我们访问http://127.0.0.1:8888/include/路径,可以看到有顺利加载footer.html的内容

# include模板
@app.route('/include/')
def include():
    return render_template('include.html')


include.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>我是include的body体</div>
{% include 'footer.html' %}
</body>
</html>

footer.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>我是页面底部内容,你可以include我,这样不用每个页面都写</p>
</body>
</html>

标题6、模板的继承

继承模板有什么作用呢?可以在父模板中我们写上比如{% block title%}index page{% endblock %}这类型的block块。
在其他html中通过{% extends ‘index.html’ %}进行引用,可以修改上面的block块。如果不修改那么就会继承使用,直接按照父模板内容显示

# 父模板
@app.route('/index/')
def index():
    return render_template('index.html')

# 继承模板
@app.route('/extendshtml/')
def extendshtml():
    return render_template('extendshtml.html')

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title%}index page{% endblock %}</title>
</head>
<body>
<div>{% block body %}父模板的body体{% endblock %}</div>
<div>{% block footer %}footer line style{% endblock %}</div>
</body>
</html>

extendshtml.html
<!-- 继承的关键字extends,如果不对父模板的固有内容修改,那么会引用父内容的东西 -->
{% extends 'index.

{% block title%}继承title{% endblock %}

{% block body %}继承body
{% endblock %}

标题7、宏和它的引用

什么叫宏,不对,flask中的宏是什么,我的理解是创建一个模板,用于快捷的在html中使用一些已创建好的标签使用。比如下方在一个forms.html中创建好宏对象。使用{% macro 标签名(一些属性)%}<标签>{% endmacro %}。在下面中使用跟python一样的导包方式进行导入操作

<!--设置一些固有的元素标签---宏-->

forms.html
<!--name(设定的),type(固有的),value(动态输入的)-->
{% macro input(name,value='',type='text') %}
    <input type="{{ type }}" name="{{ name }}" value="{{value|e}}">
{% endmacro %}


other.html
<!-- 宏的导包2 -->
{% import 'forms.html' as forms %}
<br>
<br>
姓名:{{ forms.input(name='name',value='cloudy') }}
<br>
<br>
密码:{{ forms.input(name='pwd',type='password') }}

<!-- 宏的导包1 -->
{% from 'forms.html' import input %}
姓名:{{ input(name='name',value='cloudy') }}
Flask 学习-11.redirect() 重定向 当我们访问一个需要用户先登录才能访问的地址时,比如获取用户信息,如果用户没登录,需重定向到登录页。 阅读详情

相关推荐

新年美食鉴赏——基于注意力机制CBAM的美食101分类

新年美食鉴赏——基于注意力机制CBAM的美食101分类一、数据预处理1.数据集介绍2.读取标签3.统一命名4.整理图片路径5.划分训练集与验证集6.定义美食数据集二、注意力机制1.简介2.卷积块注意力网络——CBAM通道注意力模块CAM空间注意力模块SAM3.将通道、空间注意力模块合并三、基于卷积块注意力模块的ResNet-CBAM1.代码实现2.模型测试3.查看网络结构4.模型训练5.模型预测四、总结与升华个人简介 春节是一年当中最隆重、最盛大的节日,吃得最好的一餐可能就是年夜饭了,想想就很激动呢!随着新

zbp_12138的博客 1万+

Flask中 redirect与render_template的区别

redirect和render_template 都是属于flask包下的方法 redirect为重定向 而render_template属于模板的渲染 两个区别如下 第一个为 模板渲染 @app.route('/logina') def logina(): user ={} return render_template('admin/index.html', user=use...

hhufeiji的博客 7552

Cibersort免疫浸润 --- 详细教程

免疫浸润是指免疫细胞如淋巴细胞、浆细胞、巨噬细胞等进入到组织或器官中,并在这些组织或器官中发挥免疫功能的过程。免疫细胞的浸润可以是炎症反应的一部分,也可以是针对感染、肿瘤或其他疾病的免疫应答的一部分。免疫浸润通过调节免疫反应和炎症反应的程度和类型,起到维护机体免疫平衡和清除异常细胞或病原体的作用。在某些情况下,免疫浸润可能导致炎症反应过度,引起组织损伤,例如自身免疫性疾病。因此,免疫浸润在许多疾病的诊断和治疗中都具有重要的意义。免疫浸润可以通过组织切片染色和免疫组织化学等方法观察和分析。

ZxVSaccount的博客 9109

Python——Django框架(二) 视图函数Template,render与redirect,双大括号,深度变量查找,过滤器与标签

Python——Django框架(二) 参考博文:https://www.cnblogs.com/yuanchenqi/articles/6083427.html 一、视图函数介绍 path: 请求页面的全路径,不包括域名 get_full_path(): 比如:http://127.0.0.1:8000/index33/?name=123 , req.get_full_path()得到的结果就是/index33/?name=123 local():

qq_41824825的博客 1721

ARM CoreLink 系列 5.1.1 -- CI-700 System Address Map 】

所有的CHI 命令都包含一个 Source ID 和 Target ID, 其中 Source ID 可以来自于 RN Node, Target ID 可以来自于HN node或者其他 SN node. 其中 Target ID 是通过 SAM解析传入的地址得到的。对于 CI-700中的所有 RN Node 中的 SAM 多会进行配置,因为RN Node 访问的是整个地址空间,不同的地址空间会有不同的属性(I/O, DRAM),所以会对RN SAM 配置多个不同属性的区域。

CodingCos的博客 771

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3270

2023.12.6 关于flask中的route、render_template、redirect的关系问题

之前对于`route、render_template、redirect`三者的关系还有一些模糊,测试了一个案例后就比较清晰了,简单来说就是路径、模板和重定向,三者相对独立,只是一般命名的时候都用同样的名称,容易造成误解。

leigh_chen的博客 922

置顶必读(2) | 《YOLOv11实战:从入门到深度优化》目录导航篇(持续更新中)

🏆 本文收录于 《YOLOv11实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现全网各类 YOLOv11 / YOLO系列改进方案与实战案例,目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么改”,更讲“为什么这样改、如何真正落地到项目中”。

**My Coding Family** 11万+

Flask-Web 开发——redirect、url_for、render_template、endpoint

1. redirect和url_for 两者用来重定向的时候,被操作的对象不同。 redirect直接是url,就是app.route的路径参数。 url_for()是对函数进行操作。 最简单的用法是以视图函数名作为参数,返回对应的url,还可以用作加载静态文件,如: <link rel="stylesheet" href="{{url_for('static',filename='css/index.css')}}"> url_for()还可以用来构造url,就比如说,url(‘static

Shallow的博客 2180

【温室气体】GOSAT 数据产品

【温室气体】GOSAT 数据产品

WW、forever的博客 238

老 Intel Mac mini 装 OpenClaw:低成本常年在线方案

老款Intel Mac mini部署OpenClaw方案摘要 本文详细介绍了如何利用老款Intel Mac mini低成本部署OpenClaw系统。方案推荐2011-2018款Mac mini,建议升级至16GB内存和SSD存储以提升性能。部署步骤包括:1)安装Ubuntu系统;2)配置Docker环境;3)通过docker-compose部署OpenClaw及其依赖组件(PostgreSQL和Redis);4)进行系统级和Docker层面的性能优化;5)设置开机自启动服务。该方案充分利用老款设备剩余价值,

一键难忘的博客 2477

1.3 Flask_request对象url反向解析

基于Flask框架url反向解析内容的介绍

Following my own heart 679

深度学习部署工程师--8(docker+TensorRT部署到推理+yolo人体检测)下

本文介绍了YOLOv5模型通过TensorRT加速部署的流程。首先需要检查磁盘空间,确保有30GB可用。文章对比了不同推理方式的性能:int8量化+TensorRT可达200FPS,纯TensorRT为166FPS,CUDA为147FPS,CPU为93FPS。重点讲解了将YOLOv5模型导出为ONNX格式的详细步骤,包括修改Detect类的forward方法以移除decode运算,使用git patch批量修改代码,安装必要的依赖库,以及通过onnx-graphsurgeon工具修改ONNX图结构。最终目标

FJN110的博客 495

关于Flask中的重定向问题

from flask import Blueprint, request, render_template, make_response, redirect, url_for blue = Blueprint('first', '__name__') # 带参数的render_template @blue.route('/getfile/&lt;name&gt;/') def getFile...

我叫张大大爷的博客 648

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Flask中的redirect和url_for

1. 区别 url_for是个函数接受视图函数的名字(字符串形式)作为参数,返回视图函数对应的url redirect 是重定向函数,输入一个URL后,自动跳转到另一个URL所在的地址,例如,你在函数中写return redirect('xxxx/dsn/0')页面就会该页面 redirect是方向导向此时浏览器需要功能就是跳转到指定的url 2、实例 @app.route...

zhangvalue的博客 9391

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【3.3扩展阅读】在 Flask 中,redirect和 render_template的作用和用法有什么不同?

功能:渲染模板,生成并显示页面。URL:不改变当前 URL。数据传递:通过模板变量传递数据。示例:显示用户个人资料页面。redirect功能:重定向到新的 URL。URL:改变当前 URL,浏览器跳转到新页面。数据传递:通常不直接传递数据,可通过 URL 参数或会话(session)传递。示例:登录成功后跳转到首页。

Flask Web 851

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Flask 中的 Render Redirect HttpResponse

Flask 中的 Render Redirect HttpResponse 1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2.Flask中的Redirect 每当访问"/redi"这个地址的时候,视图函数redi会触发redir...

dmya6801的博客 139

Flask 2.3 静态页面渲染与跳转:3种路由方法对比与最佳实践

本文详细解析了Flask 2.3中三种静态页面渲染与跳转的路由方法:`render_template`、`redirect`+`url_for`以及直接返回HTML字符串。通过性能测试数据和场景化选型建议,帮助开发者根据项目需求选择最佳方案,提升Web应用开发效率。

迷彩风情 374

视图函数返回值——render_template,make_response,redirect重定向

1.返回字符串 如果只有字符串,就是返回内容,数据 还有第二个返回,返回的是状态码 @blue.route('/response/') def get_response(): return '德玛西亚',404 2.render_template() 里面放模板,主要是渲染模板,将模板变为字符串 @blue.route('/rendertemplat...

pyword的博客 1610

Python第三方库 - Flask(python web框架)

flask轻量级框架

JUN_7777的博客 5543

python flask body_html 字符串替换_python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Ji...

一、Flask初识首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分三大主流Web框架对比1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架2.Tornado 主要特点是原生异步非阻塞,在IO...

weixin_34070493的博客 578

Flask的Response常用操作

Flask 的Response常用操作 服务器返回给客户端的数据 由程序员创建,返回Response对象 1. 直接返回字符串, 可以返回文本内容,状态码 2. render_template 渲染模板,将模板转换成字符串 3. 通过make_response(data,code) - data 返回的数据内容 - code 状态码 4. 返回Response对象 ...

hu1258123819的博客 5516

Flask 2.3 静态页面渲染与跳转:3种路由配置方案与性能开销实测

当开发者需要构建一个轻量级Web应用时,Flask无疑是Python生态中最受欢迎的选择之一。特别是在处理静态页面渲染与跳转这类基础但高频的需求时,Flask提供了多种灵活的路由配置方案。通过合理搭配这三种方案,开发者可以在保证功能完整性的同时,获得最佳的性能表现。Flask的灵活性正是体现在这种可以根据具体需求选择最合适工具的能力上。这是Flask官方推荐的标准方案,特别适合需要动态内容的页面。动态生成三种主流方案的技术细节,并通过实测数据对比它们的性能差异,帮助开发者根据实际场景做出最优选择。

weixin_34319111的博客 418

2,Flask 中的 Render Redirect HttpResponse

一,Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 二,.Flask中的Redirect 每当访问"/redi"这个地址的时候,视图函数redi会触发redirect("/") 跳转到url地址: "/" 并会触发"/"对应的视图函数index() 三,Flask 中的 r...

a88842443的博客 123

flask-day2:ssh配置,flask-script|url与函数映射|url_for|GET/POST方法|redirect|render_template|获取表单值

flask-day2pycharm的ssh配置flask scripturl与映射URL与函数的映射: pycharm的ssh配置 通过windows下的pycharm进行开发,服务器环境在阿里云: 在pycharm新建项目,在阿里云先创建虚拟环境,相关参数 网站所在目录:/root/www virtualenv名称:flask01, virutalenv所在目录:~/.virtualenvs/f...

lailjx123的博客 504
上一篇: Flask配置文件的使用
下一篇: flask蓝图buleprint使用
spring_cloudy
博客等级 码龄8年 47粉丝 100原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值