文档章节

记录flask的一个坑,有关render_template的

Klaus88
 Klaus88
发布于 2014/12/22 11:15
字数 403
阅读 712
收藏 0

最近开始把flask用在生产上了,其实还算顺利,但是确实有一些坑。

render_template其实很智能了,平常的情况下是没问题的,但是和blueprint结合后,就带来了坑。多方查找,终于在Stack Overflow上找到解决方案,其实也还是没解决。

http://stackoverflow.com/questions/7974771/flask-blueprint-template-folder

先说说描述问题吧。如果你的flask用了blueprint,那如下的目录结构,是很正常的状况。


admin和main是2个blueprint,注意那2个templates文件夹,里面都是有index.html文件的,然后问题就来了。

2个blueprint里面views.py里相应的,应该都会有那么一段代码:

@bp.route('/', methods=['Get'])
def index():
    return render_template('index.html')

很普通的一段代码,但是你测试一下就晕了,

http://127.0.0.1:5000/admin/ 和 http://127.0.0.1:5000/main/,发现render的都是admin里的templates里index.html!!这个是flask的自动寻址的问题,先找到admin里有index.html了,就返回了!真是啊能不能不那么傻啊!

晕了吧,然后神奇的,为什么static文件夹里的路径,能正常render到呢??flask是傻了啊?

然后根据上面给出的stackoverflow的文章,这个问题是0.8就一直存在了,现在都tm 0.10.1了,还没改过来??

所以没办法了,解决方案就只能按下面的方法了。

目录结构里,把blueprint的名字放进去,好区分。

然后代码里,

#main/views.py
@bp.route('/', methods=['Get'])
def index():
    return render_template('main/index.html')

#admin/views.py
@bp.route('/', methods=['Get'])
def index():
    return render_template('admin/index.html')

fin.

© 著作权归作者所有

共有 人打赏支持
Klaus88
粉丝 5
博文 15
码字总数 7457
作品 0
南宁
高级程序员
私信 提问
【Python搞搞轻量Blog】第二发 Flask入门(2)

Hi,大家好。我是仙宇 上一篇文章 Flask入门 中创建了一个非常简单的Web应用。 但从最简单中又稍微深入的说了一下Flask 基于Werkzeug。 使用模板 (利用HTML) 如何快速利用写好的HTML呢? ...

仙宇
2018/03/31
0
0
flask中的url_for与render_template()函数

flask.url_for(endpoint,**values):为给定的endpoint创建URL。 endpoint:函数名称 **values:未知的变量将添加到URL中作为查询参数 如: >>> from flask import Flask, url_for >>> app = F......

指尖跳动的精灵
2015/01/20
0
0
flask的html模板的覆盖问题

环境如下: win10、Python3.6.5、Flask1.0.2 项目结构如下: /app/main/views.py内容如下:

fushall
2018/05/22
0
0
Flask, Angularjs共存之道

摘要 举一个简单的应用例子, oschina上有 python文件app.py 建立一个templates目录,以及创建文件homepage.html 这个已经是一个最简单的flask+angular的例子了。使用 打开浏览器访问 发现了什...

go-skyblue
2015/11/19
0
0
在flask-sqlalchemy中使用分页

其实在使用中sqlalchemy和flask-sqlalchemy还是有点区别的的,sqlalchemy中使用query查询,而flask-sqlalchemy中使用basequery查询,他们是子类与父类的关系,flask-sqlalchemy中分页写的很明...

ranvane
2014/01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP7源码编译安装详解

下面进行编译安装PHP7.0,编译安装最头疼的就是因为某些类库没有安装而报错,所以编译前请确保以下包已安装。 $ yum groupinstall "development tools"$ yum install -y gcc gcc-c++ aut...

Linux就该这么学
32分钟前
1
0
Tomcat的管理功能

Tomcat的管理功能 host-manager(管理虚拟主机) 这个功能是用来管理虚拟主机的,可以通过这个WEB界面,来停止、启动以及增加虚拟主机。首先要配置用户角色: 浏览器输入host-manager地址 # ...

wzb88
今天
2
0
Java引用传递和JVM堆栈的关系说明

通过代码说明 Java 引用传递在堆栈上的关系。 可以从JVM的内存空间存放上说明,值传递 和引用传递。 堆(线程共享):对象、对象的全局变量、数组 栈(线程私有):声明为局部变量的 基本数据...

冷基
今天
2
0
直接插入排序

直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。直接插入排序的时间复杂度为O(n^2),但性能比冒泡排序和简单选择排序的性能要好一点...

niithub
今天
2
0
data.world、远观数据

产品思路: 1、共享数据集。 2、数据结构化。 3、数据展示。 https://data.world

colin_86
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部