5. 链接辅助函数 与 使用静态文件
2015-06-02 16:34
441 查看
1、链接辅助函数url_for()
为什么要有这个函数?待会再说,先用起来。
首先,在hello.py中from flask import Flask, render_template后面加上url_for,然后在定义的index()函数中定义变量
接着,去模板文件index.html中设置图片显示,在内容块({% block page_content %})中添加
然后重启服务器,在浏览器中就可以看到图片了(就是那个小辣椒)。
再来看为什么的问题,树上这么写的:
”在模板中直接编写简单路由的URL链接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL就很困难。而且,直接编写URL会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板中的链接可能会失效。为了避免这些问题,Flask提供了url_for()辅助函数。“
对这段话并不理解,可能是因为我定义URL过程中没遇到那些问题。存疑,以后再回来理解。
再补充点url_for()的用法:
1. 直接以视图函数作参数,返回对应的URL。
比如当前的hello.py中调用url_for(‘index’)则返回/。
调用url_for(‘index’, _external=True)返回的则是绝对地址,http://localhost:5000/。
2. 使用url_for()生成动态地址时,将动态部分作为关键字参数传入。
如:url_for(‘user’, name=’john’, _external=True)的返回结果是http://localhost:5000/user/john。
3. 添加额外参数到查询字符串中。
如:url_for(‘index’, page=2)的返回结果是/?page=2。
2、使用静态文件
静态文件,指不含变量、不会被脚本或浏览器改动的文件,比如图片/HTML文件/CSS文件/javascript源码等。
Flask处理静态文件要注意两点:
一是静态文件位置,要存放在Python脚本同级的static文件夹中,如果需要,可以建立子文件夹;
二是处理方法,既可以在脚本中编码涉及,也可以在模板文件中涉及。
用法就是简单的文件调用,可以直接通过文件路径访问,也可以用url_for()函数访问。
为什么要有这个函数?待会再说,先用起来。
首先,在hello.py中from flask import Flask, render_template后面加上url_for,然后在定义的index()函数中定义变量
img=url_for('static', filename='favicon.ico') # url_for的参数,'static'表示文件类型,filename用来存文件在static文件夹中的路径
return render_template('index.html', img=img) #末尾加上img=img
接着,去模板文件index.html中设置图片显示,在内容块({% block page_content %})中添加
<img src="{{img}}" />
然后重启服务器,在浏览器中就可以看到图片了(就是那个小辣椒)。
再来看为什么的问题,树上这么写的:
”在模板中直接编写简单路由的URL链接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL就很困难。而且,直接编写URL会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板中的链接可能会失效。为了避免这些问题,Flask提供了url_for()辅助函数。“
对这段话并不理解,可能是因为我定义URL过程中没遇到那些问题。存疑,以后再回来理解。
再补充点url_for()的用法:
1. 直接以视图函数作参数,返回对应的URL。
比如当前的hello.py中调用url_for(‘index’)则返回/。
调用url_for(‘index’, _external=True)返回的则是绝对地址,http://localhost:5000/。
2. 使用url_for()生成动态地址时,将动态部分作为关键字参数传入。
如:url_for(‘user’, name=’john’, _external=True)的返回结果是http://localhost:5000/user/john。
3. 添加额外参数到查询字符串中。
如:url_for(‘index’, page=2)的返回结果是/?page=2。
2、使用静态文件
静态文件,指不含变量、不会被脚本或浏览器改动的文件,比如图片/HTML文件/CSS文件/javascript源码等。
Flask处理静态文件要注意两点:
一是静态文件位置,要存放在Python脚本同级的static文件夹中,如果需要,可以建立子文件夹;
二是处理方法,既可以在脚本中编码涉及,也可以在模板文件中涉及。
用法就是简单的文件调用,可以直接通过文件路径访问,也可以用url_for()函数访问。
相关文章推荐
- 使用Python写的第一个网络爬虫程序
- 机器学习为什么要学习最优化呢?
- 【解决】Mysql字符集问题
- java.util.ArrayList.toArray(T[]) 方法实例
- Android多线程断点续传下载
- 黑马程序员--Java基础总结
- AndroidManifest.xml——文件详解(一)
- #Android 自定义字体样式
- 【基础练习】【拓扑排序】codevs3294 车站分级题解
- SRS文档及测试计划
- Python学习笔记3
- zzzzw_在线考试系统③完结篇
- 【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结
- 程序员常用字体(vs字体修改方案)
- [AUTONAVx][lec4] PID Control
- nginx不使用正则表达式匹配
- OS(关于版本控制)使用git 创建远程仓库-熟知这些命令行,带你装逼带你飞!
- cmake 交叉编译 x265到 arm32库
- 命名管道创建和读写
- 闭包