如何使用python Flask MVC渲染index.html

时间:2016-01-25 15:47:45

标签: python python-2.7 flask

这对我来说绝对是一个新领域,我只是对这项工作的看法感到困惑

Flask服务器

$ more flask-hello-world.py 
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return render_template('index.html') #"Hello World!"

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

的index.html

$ more index.html 
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
</head>
<body>

Hello worlds
</body>
</html>

测试

$ curl 127.0.0.1:5000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request.  Either the server is overloaded or there is an error in the application.</p>

当我return "Hello World!"它确实正常工作时。我尝试return render_template('index.html')时为什么会收到错误?

2 个答案:

答案 0 :(得分:3)

首先,您应该BFG Repo Cleaner,因此您会看到有意义的错误,而不是固定的 HTTP 500内部服务器错误

app.run(debug=True)

render_template

您的Flask应用程序可能有什么问题

从您的源代码中我发现您尚未导入from flask import Flask, render_template # The rest of your file here

这至少是一个问题,请修复:

templates

模板名称和目录

有一个参数turn on debugging for your Flask app  您可以使用告诉Flask在哪里查找模板。根据链接文档,该值默认为templates,这意味着默认情况下,Flask会在名为app = Flask(__name__, template_folder='.') # '.' means the current directory 的文件夹中查找模板。因此,如果您的模板位于项目根目录而不是文件夹,请使用:

E.g。如果您的模板位于同一目录中,则为app:

a[(j*nlocal_rows + i)].dr = mat_els[full_row * m + full_col];
a[(j*nlocal_rows + i)].di = 0.0;

答案 1 :(得分:1)

您需要将模板放在app = Flask(__name__, template_folder='.') 文件夹中,或者将其放入:

.css()