FlaskWebDevelopment - Flask模板4 - url_for()在模板中生成链接

这里讲用url_for()来简化在模板中生成链接的操作。以产生静态文件链接为例。

url_for()

直接在模板里写URL,当页面复杂了之后很麻烦,而且可能对代码产生依赖,代码改动后链接就失效了。

URL可以通过Flask提供的url_for()来动态产生。这个函数以视图函数名或者注册视图函数时的端点名作为参数,返回相应的URL。

比如在目前的代码中:

url_for(‘index‘)返回\

url_for(‘index‘, _external=True)返回http://localhost:5000/

一个是相对的链接,应用内部跳转足够了,另一个是绝对的链接。

url_for()还支持传入视图函数的参数,url_for(‘user‘, name=‘john‘, _external=True)返回的就是http://localhost:5000/user/john。如果传入的参数不是视图函数的参数,那么这个参数会被作为一个查询字符串放在链接后,url_for(‘index‘, page=2)返回的是/?page=2

用url_for()产生静态文件链接

web应用不仅仅涉及Python和模板,还需要一些静态文件,像图片,JavaScript文件,CSS等等。

Flask里对静态文件的引用被视为特殊的路由:/static/<filename>,调用url_for(‘static‘, filename=‘css/styles.css‘, _external=True)得到的URL是:http://localhost:5000/static/css/styles.css

默认情况下Flask在应用根目录下的static文件夹里寻找静态文件。可以在这个文件夹里组织好各静态文件的存放路径,可以在里面新增文件夹。

下面在基础模板添加内容,展示如何引入一个favicon.ico图标:

{% block head %}
{{ super() }}
<link rel="shortcut icon" href="{{ url_for(‘static‘, filename = ‘favicon.ico‘) }}"
type="image/x-icon">
<link rel="icon" href="{{ url_for(‘static‘, filename = ‘favicon.ico‘) }}"
type="image/x-icon">
{% endblock %}

templates/base.html里增加这段,卸载head 块的最后,用super()来保留父模板的内容。

注:

  • 代码到3d tag了
  • 下个是Flask-Moment插件的部分,这个插件做的操作主要是对时间进行格式化,包括自动对client端跨时区情况下的调整,同时提供了一些对时间的计算包括过去了多久之类的函数,实际上是对moment.js在Flask下的封装,暂时感觉没啥意义,决定跳过。这个算坑3。
时间: 2024-08-07 21:19:53

FlaskWebDevelopment - Flask模板4 - url_for()在模板中生成链接的相关文章

FlaskWebDevelopment - Flask模板2 - Flask-Bootstrap插件

这部分还是属于模板,讲Flask里嵌入Bootstrap,利用Flask-Bootstrap插件.这个插件存在的意义就是简化这个嵌入的操作过程,当然不用也可以. 通过Flask-Bootstrap集成Bootstrap Bootstrap的介绍就不翻了. Bootstrap作为一个client端的框架,他最终存在于HTML文件中,做Flask应用开发的话,应该把它放入模板中. Flask-Bootstrap插件可以简化这个集成操作,用pip安装: $ pip install flask-boot

flask模板的基本用法、模板语法、渲染模板、模板辅助工具

flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTML代码中插入变量,这时我们需要使用模板引擎(template engine).借助模板引擎,我们可以再HTML文件中使用特殊的语法来标记变量,这类包含固定内容和动态部分的可重用文件称为模板(template). 模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输

flask 电子邮件进阶实践-用模板发送163邮件

电子邮件进阶实践 下面来学习构建邮件的HTML正文,并使用模板组织内容. 一封电子邮件的正文可以是纯文本(text/plain),也可以是HTML格式的文本(text/html).处于全面的考虑,一封邮件应该既包含纯文本正文又包含HTML格式的正文.HTML格式的正文将被优先读取:加入收信人的邮件系统比较古老,无法读取HTML格式的邮件,则会读取纯文本格式的正文. 下面来学习如何编写HTML邮件正文,以及如何在Flask-Mail中同时提供这两种格式的邮件正文. 如果HTML正文非常简单,比如仅

flask实战-个人博客-模板

模板 personalBlog采用典型的博客布局,左侧三分之二为主体,显示文章列表.正文:右侧三分之一为边栏,显示分为类列表.社交链接等.现在的工作是将HTML文件加工为模板,并创建对应的表单类,在模板中渲染. 并非所有的页面都需要添加边栏,所以我们不能把它放到基模板中.为了避免重复和易于维护,我们把边栏部分的代码放到了局部模板_sidebar.html中.除了基模板base.html和存储宏的macros.html模板,personalBlog程序的博客前台使用的模板如下所示: index.h

Flask框架 请求与响应 &amp; 模板语法

目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) Flask 中的 Request(请求) Flask 模板语言简单使用 Flask框架参考手册 原文地址:https://www.cnblogs.com/guokaifeng/p/11587311.html

IAR模板--如何在IAR工程中创建和使用模板

如何在IAR工程中创建和使用模板 1.编辑和使用模板的方式: 路径为:Edit -> Code Templates -> Edit Templates  如下图: 创建好模板后,可以在文件中单击右键,选择Insert Template 来插入你编辑好的代码模板. 2.如果创建编辑各种模板: 定义代码模板的语法是:模板<template name> ,<field> [=默认值] <field> ... ... 模板组成元素:模板名称,参数名称和参数的默认值,

Velocity在web项目中生成模板

需求:后台(指管理员后台)上传一个html模板到文件服务器上,前台(商家操作的平台)读取到模板,并填充数据,生成新的vm页面到webapp/WEB-INF/view目录下,用于预览.保存.打印. 最开始的代码: @Test public void test() throws Exception{ String templateUrl = baseService.getPicServerURL()+"group1/M00/02/1E/wKi0d1NasvaAF6x_AAAdoyBssxg53.ht

ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码的解决方法

ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码了,为什么呢? 因为直接在模板中加入php函数和代码,没有经过过滤,容易造成安全隐患.程序源码安全是非常重要的. 不过如果有朋友希望能在模板文件中直接加入php代码,怎么办呢? 其实,只需要改动一个文件,即includes/cls_template.php 打开此文件,找到函数 function fetch_str($source) 在此函数中找到,大概在288行 if(preg_match_all('~(<\?(?:\w+|=

Flask(七)flash模板循环,判断

Project name :Flask_Plan templates:templates static:static 继续前面的代码 修改Flask_Plan.py @app.route('/') def hello_world(): plan = [ { 'date':'20171212', 'train':'T198', 'track':'8' } , { 'date':'20171212', 'train':'T199', 'track':'9' } , { 'date':'2017121