您的位置:首页 > 其它

5. 链接辅助函数 与 使用静态文件

2015-06-02 16:34 441 查看
1、链接辅助函数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()函数访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: