我在Flask应用中应该把模板文件夹放在哪里?
我在我的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
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()