Flask:如果请求URL与其名称匹配,则自动呈现模板

时间:2015-08-13 19:11:24

标签: python templates flask

我可以在Flask应用程序的模板目录中有一个包含不同模板的结构,如果有与模板目录中模板位置匹配的请求,每个模板都会被渲染吗?

所以如果模板dir看起来像这样:

/template
  yellow
  red
  /blue
    black
    white

如果请求来自example.com/yellow,请提供yellow模板;如果请求来自example.com/blue/black,则提供black模板。当然,如果没有找到模板,请返回404。

2 个答案:

答案 0 :(得分:3)

您可以使用path:来声明template将在路由中的变量类型:

@app.route('/')
def index():
    return 'Index page'

@app.route('/color/<path:template>')
def template_router(template):
    return render_template(template + '.html')

所以进入'site / color /'的任何内容都会被捕获并发送到template_router方法。从那里,如果需要,请附加 .html 并尝试加载模板。你可能想要设置一个捕获404的方法。

您的目录结构如下所示:

.
├── app.py
└── templates
    ├── black.html
    └── blue
        └── black.html

答案 1 :(得分:0)

为什么不制作父模板,并将颜色传递给它?因此,在您的模板中,类似LT50300282007136PAC01

import arcpy
import os
#pathway where there are only 80 .tif files, one for each landsat scene
arcpy.env.workspace=r'F:\Sheyenne\Atmospherically Corrected Landsat\hank_masked\Band 1'
#list of rasters in above pathway
list1 = arcpy.ListRasters("*.tif")
#output save pathway
mainpath=r'F:\Sheyenne\Atmospherically Corrected Landsat\Individual Scenes\Main'

#create folder for each landsatscene containing first 21 characters
for raster in list1:
    rasterName=raster[0:21]
    if raster.startswith(rasterName.split("_")[0]):
        final_path=os.path.join(mainpath,rasterName)
        os.makedirs(final_path)

然后有这样的路线

colors.html