您好,匿名用户
随意问技术百科期待您的加入

Flask的url_for()引用静态文件,如何让http和https都能正常获取

0 投票

静态js文件,默认是用下列方式获取

{{ url_for('static', filename='css/style.css') }}

这种输出的是 http:// 开头的地址,但是,在https页面样式就会丢失
为了避免这种问题,html5-boilerplate框架里推荐使用下面不带http的方式引用

<link rel="stylesheet" src="//xxx.com/css/style.css" />

那么,Flask的url_for()方法怎么实现呢?

用户头像 提问 2013年 12月20日 @ Thresh 上等兵 (138 威望)
分享到:

1个回答

0 投票
 
最佳答案

我的方法是覆写url_for,但我觉得肯定有别的方法配置。
在发现url_for('static')的时候调用新的方法,调用常量STATIC_URL_ROOT。

STATIC_URL_ROOT = '//xxx.com/css/'
@app.context_processor
def override_url_for():
    return dict(url_for=static_url_for)

def static_url_for(endpoint, **values):
    if endpoint == 'static':
        filename = values.get('filename', None)
        if filename:
            file_path = STATIC_URL_ROOT + filename
            return file_path
    else:
        return url_for(endpoint, **values)
用户头像 回复 2013年 12月20日 @ Zac 列兵 (77 威望)
选中 2013年 9月7日 @Thresh
提一个问题:

相关问题

0 投票
1 回复 44 阅读
用户头像 提问 2013年 12月13日 @ Vergil 上等兵 (384 威望)
+2 投票
1 回复 55 阅读
0 投票
1 回复 50 阅读
用户头像 提问 2012年 12月1日 @ Hepheastus 上等兵 (182 威望)
0 投票
1 回复 4 阅读
0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Sona 上等兵 (306 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...