您的位置:首页 > 其它

用flask开发个人博客(13)—— 链接静态资源

2016-09-27 23:52 381 查看
        之前介绍过flask中查看路由映射关系的方法:

>>> from test import app
>>> app.url_map
Map([<Rule '/user' (HEAD, OPTIONS, GET) -> user>,
<Rule '/' (HEAD, OPTIONS, GET) -> index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
<Rule '/user/<name>' (HEAD, OPTIONS, GET) -> test>])


        上面的映射关系中,除了第三种之外都是我们在test.py中通过代码写入的映射关系,而第三种是flask默认生成的,现在主要介绍下第三种映射关系.flask中默认将一些静态文件如图片/css文件等放入static文件夹下,而我们可以在html文档中对其进行访问.

        在介绍访问方法之前,先介绍下flask模板中的url_for()函数,该函数在html文档中调用,以视图函数为参数,返回该视图函数对应的url,如在test.py中,我们定义了映射到/user/<name>的视图函数user:

@app.route('/user/<name>')
def test(name):
return render_template('test.html',name=name)


        当我们调用url_for(test)时,它会返回 '/user/<name>'这个url,这里的<name>其实也是一个变量,要想给他赋值,可以通过以下方式:url_for(test,name='liuzhihui'),这样我们就得到了一个值为"/user/liuzhihui"的url,我们就是利用url_for的这种方式关联static目录下的静态资源.

<html>

<head>
<title>文档的标题</title>
<link rel="shortcut icon" href="{{url_for('static',filename='fb.png')}}"
type="image/x-icon"/>
</head>

<body>
文档的内容... ...
</body>

</html>


        上面的html文档,将标题和static文件夹下的fb.png图标进行关联,效果就是在文档页的头部会出现一个小小图标,如下图所示:



        这里面,

url_for('static',filename='fb.png'
        作用就是返回一个url只想static目录,/static/<filename>,然后用'fb.png'给filename赋值,url就变成"/static/fb.png",因为是在html中调用函数,所以url_for前面用两个花括号括了起来,变成:

href="{{url_for('static',filename='fb.png')}}"


Github位置:
https://github.com/HymanLiuTS/flaskTs

克隆本项目:
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL13
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: