有关flask的static文件夹,如何设置在blueprint的根目录下呢?

原创
2015/01/15 17:23
阅读数 9.6K

flask把template和static文件分别放在各自文件夹下是很不错的管理方法,但是有很多css和js包里会引用一下图啊什么的,会要求是跟着访问页文件的,比如这样:

  var line1=$('<div class="mobanthum empty" style="background:rgba(68,195,181,0.9)"> <img src="./res/line_demo1.jpg" style="width:100%;height:100%"/> </div>');

如果你的blueprint和原来的写法一样,比如这样:

bp = Blueprint("wx_template1", __name__, template_folder="templates", static_folder='static')

而你肯定在template文件里是这样写的:

<link rel="stylesheet" href="{{ url_for('wx_template2.static',filename='css/pageswiper.css') }}">

那就郁闷了,这个img肯定是访问不到的。

例如你的view里这样写:

@bp.route('/editor/')
def editor():
    return render_template('wx_template2/editor.html')

因为这个href的路径是 static/css/pagewiper.css,而里面引用的img文件的路径就是 editor/res/line_demo1.jpg,肯定就访问不到了。


所以,现在我们就要把css文件夹设置到blueprint下。

查了很多资料,秘密在Blueprint的定义时。这样写就OK了:

bp = Blueprint("wx_template2", __name__, template_folder="templates", static_url_path='', static_folder='')

后面那2个都要定义,然后在template里就可以按原来的写法:

<link rel="stylesheet" href="{{ url_for('wx_template2.static',filename='css/pageswiper.css') }}">

当然这个css文件夹是放在blueprint的根目录下的,就是那个blueprint的template文件夹同级的。

展开阅读全文
加载中

作者的其它热门文章

打赏
1
5 收藏
分享
打赏
1 评论
5 收藏
1
分享
返回顶部
顶部