我在Flask应用中应该把模板文件夹放在哪里?

1 投票
4 回答
7290 浏览
提问于 2025-04-18 09:37

我在我的Flask应用中尝试使用render_template

# -*- coding: utf-8 -*-

from flask import Flask, render_template, redirect, url_for, request

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello World", 200

@app.route('/welcome')
def welcome():
    return render_template("welcome.html")

@app.route("/login", methods=["GET", "POST"])
def login():
    error = None
    if request.method == "POST":
        if request.form["username"] != "admin" or request.form["password"] != "admin":
            error = "Invalid credentials. Please try again!"
        else:
            return redirect(url_for("home"))
    return render_template("login.html", error=error)


app.run(debug=True)

我觉得我的应用无法找到welcome.html(还有模板文件夹),因为我总是收到“内部服务器错误”,而且没有显示HTML页面。

在一个文件夹里,我有app.py、静态文件夹和模板文件夹(里面有HTML文件)。

这里到底出了什么问题呢?

4 个回答

0

默认情况下,你需要把模板文件放在一个叫做“templates”的文件夹里,注意这个名字要全小写。

举个例子,如果你的应用程序文件叫做 app.py,而你在里面使用了 render_template("welcome.html"),那么你就需要在和 app.py 同级的目录下,创建一个叫做 templates 的文件夹,并在里面放一个名为 welcome.html 的文件。

结构应该是这样的:

app.py
templates
welcome.html

0

你可能不需要在模板的名字里加一个 / 符号。
(也就是说,应该用 'welcome.html',而不是 '/welcome.html').

可以查看 文档 来了解 render_template 的用法。

0

有斜杠和没有斜杠都可以用。

你能分享一下文件夹的结构和你正在执行的脚本吗?比如一个叫init.py的文件。

可以看看这个链接(这是我网页的代码库),看看你是否漏掉了什么东西。

0

你的Python脚本里有没有一个最基本的Flask应用所需要的所有部分呢?

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/welcome')
def welcome():
    return render_template("/welcome.html")

if name== "__main__":
    app.run()

撰写回答