当前位置: 首页 > news >正文

实用指南:Flask学习笔记(三)--URL构建与模板的使用

实用指南:Flask学习笔记(三)--URL构建与模板的使用

一、URL构建

url_for()函数对于动态构建特定函数的URL非常有用。 该函数接受函数的名称作为第一个参数,并接受一个或多个关键字参数,每个参数对应于URL的变量部分。

from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/admin')
def hello_admin():
return 'Hello Admin'
@app.route('/guest/')
def hello_guest(guest):
return 'Hello %s as Guest' % guest
@app.route('/user/')
def user(name):
if name =='admin':
return redirect(url_for('hello_admin'))
else:
return redirect(url_for('hello_guest',guest = name))
if __name__ == '__main__':
app.run(debug = True)

如上面代码中,url_for接收了hello_admin和hello_guest函数作为第1个参数,根据传入不同的值,执行不同的函数。

二、模板

Flask可以以HTML形式返回绑定到某个URL的函数的输出。如果从Python代码生成HTML内容非常麻烦,尤其是在需要放置可变数据和Python语言元素(如条件或循环)时。经常需要转义HTML代码。这种方式不推荐。

另一种方式是利用Jinja2模板引擎技术,而不需要从函数返回硬编码HTML。如下代码所示,可以通过render_template()函数渲染HTML文件。

1、编写hello.py文件

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return render_template(‘hello.html’)
if __name__ == '__main__':
app.run(debug = True)

然后在该脚本所在的同一文件夹中创建templates目录,并在里边创建html文件hello.html,写入如下代码;

Flask 模板使用
Hello {{ name }}!

执行上面的hello.py文件,在浏览器中访问,可以看到参数中的kelly替换为html中的 {{ name }}

拓展:

1、条件结构

Jinja2模板引擎使用以下分隔符来从HTML转义。

{% ... %} 用于多行语句

{{ ... }} 用于将表达式打印输出到模板

{# ... #} 用于未包含在模板输出中的注释

# ... ## 用于单行语句

在以下示例中,演示了在模板中使用条件语句。 hello()函数的URL规则接受整数参数。 它传递给hello.html模板。 在它里面,收到的数字(标记)的值被比较(大于等于或小于60),因此在HTML执行了有条件渲染输出。

python脚本:

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/hello/')
def hello_score(score):
return render_template('score.html',marks=score)
if __name__ == '__main__':
app.run(port=5000,debug=True)

html代码:

Flask模板示例
{% if marks>=60 %}通过考试!
{% else %}
未通过考试!
{% endif %}

启动python程序,在浏览器中输入不同的分数:

2、循环结构

循环结构也可以在模板内部使用,在以下脚本中,当在浏览器中打开

URL => http:// localhost:5000/result时,result()函数将字典对象发送到模板文件: results.html 。

result.html 的模板部分采用for循环将字典对象result{}的键和值对呈现为HTML表格的单元格。

python脚本:

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/score')
def score():
dict1 = {'python': 90, 'java': 80, 'go': 70}
return render_template('score_table.html',score = dict1)
if __name__ == '__main__':
app.run(port=5300,debug=True)

html代码:

Flask模板示例
{% for key, value in score.items() %}{{ key }}{{ value }}
{% endfor %}

执行后输出:

http://www.wxhsa.cn/company.asp?id=4707

相关文章:

  • Ollama + Python 极简工作流
  • 快速搞定Dify+Chrome MCP:打造能操作网页的AI助手
  • HCIP——RSTP
  • ORA-01555系列:三、ORA-01555总结与高级优化建议
  • Unstable Twin - TryHackMe
  • 单片机实现挡位调节
  • 完整教程:从 WildCard 野卡到 gptplus.plus:一次解决 OpenAI 支付难题的实战复盘,轻松搞定Gpt充值
  • 阿里 Qoder 新升级,Repo Wiki 支持共享、编辑和导出
  • 长城杯WriteUp
  • vite取别名@
  • JavaScript数据网格方案AG Grid 34.2 发布:更灵活的数据结构、更流畅的大数据交互与全新 UI 体验
  • BOE(京东方)IPC电竞嘉年华盛典圆满收官 第三届无畏杯总决赛引领电竞生态发展热潮
  • P1886 滑动窗口 /【模板】单调队列
  • kingbase金仓数据库docker部署完整步骤
  • glTF/glb功能、应用和 5 个基本最佳实践
  • AI 应用开发,不就是调个接口么?
  • 95.费解的开关
  • godot4人物移动一段距离后随机旋转代码,(死循环)
  • Spotify 音乐ML练习数据集含158 个特征,11
  • abc423
  • AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡
  • 最新药物数据集下载:来自Drugs
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发
  • Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测
  • AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性
  • 200 万份脑部 MRI 扫描 + 放射科报告数据集:DICOM 格式高分辨率影像,覆盖 50+ 脑部病理(脑肿瘤、神经退行性疾病、多发性硬化症等),支持 AI 病理识别 _ 分类 _ 分割
  • 30万份行业报告数据集:覆盖金融科技医疗能源等20+行业领域,2010-2024年完整时间跨度,提供高质量PDF和文本格式,支持深度学习模型训练、行业趋势分析、市场竞争研究、学术论文写作的多场景应用