码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-10-18 01:57:33      阅读:954      评论:0      收藏:0      [点我收藏+]

标签:style   http   os   java   for   strong   sp   文件   on   

这里讲用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。

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

标签:style   http   os   java   for   strong   sp   文件   on   

原文地址:http://my.oschina.net/zanyang1103/blog/333961

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!