Python中bottle框架的视图无法调用模板文件怎么办?

from bottle import route,run
from bottle import template,view

@route(’/’)
def index():
var =“123.com
return template(‘index’,text=var)

@route(’/kvm’)
@view(‘kvm’)
def kvm():
var = “123.com
return var

两个模板内容完全一样

访问时根目录使用模板可以正常显示,/kvm 路由无法显示模板内容,只能显示 var 内容
Python中bottle框架的视图无法调用模板文件怎么办?


1 回复

这个问题通常是模板路径没设对。Bottle默认在当前目录的views/文件夹里找模板,你得确保文件放对了地方。

最直接的解决办法是明确指定模板目录。在你的应用文件里,加这么几行:

from bottle import Bottle, run, template
import os

app = Bottle()

# 关键在这里:设置模板路径
# 假设你的模板文件放在项目根目录下的 'templates' 文件夹里
current_dir = os.path.dirname(os.path.abspath(__file__))
template_path = os.path.join(current_dir, 'templates')

# 方法一:修改Bottle的TEMPLATE_PATH(影响全局)
app.TEMPLATE_PATH.insert(0, template_path)

# 或者方法二:在调用template()函数时直接指定路径(更推荐,更清晰)
@app.route('/')
def index():
    # 使用绝对路径确保找到文件
    return template(os.path.join(template_path, 'index.tpl'), name='World')

if __name__ == '__main__':
    run(app, host='localhost', port=8080)

检查这几点:

  1. __file__ 能正确获取当前脚本路径。
  2. templates/index.tpl 这个文件确实存在。
  3. 如果你用 SimpleTemplate,模板文件扩展名得是 .tpl

用绝对路径设模板目录最省心。

回到顶部