我对Flask还是陌生的,正在尝试创建一个个人网站作为练习。我正在寻找一个项目页面,我想问关于文件和项目URL路径的以下问题:
/projects
文件夹中。如何从另一个文件夹render_template
来使proj1()
函数从/projects/proj1.html
而不是/tempates/.proj1.html
提取?有没有更好的方法来指定其他文件夹位置?app.py
中,我为@app.route("/projects/project1")
硬编码了proj1.html
。有什么更好的方法来更改此设置,以便为proj2.html
和proj3.html
之类的其他项目创建路径?我相信我可能需要写类似@app.route("/projects/<project>")
的东西并以某种方式传递项目名称?这是文件夹结构:
/project
app.py
/templates
home.html
about.html
layout.html
proj1.html
projects.html
/projects
proj1.html
proj2.html
proj3.html
我的app.py
看起来像这样:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
@app.route("/home")
def home():
return render_template('home.html')
@app.route("/projects/")
def projects():
return render_template('projects.html', title='Projects')
@app.route("/projects/project1")
def proj1():
return render_template('proj1.html')
if __name__ == '__main__':
app.run(debug=True)
在projects.html
内部,我有以下内容:
<h2><a href="project1">Project Link</a></h2>
谢谢!还有很多工作要做,但我现在将设置项目页面。
答案 0 :(得分:1)
这似乎是更好的组织:
return render_template('projects/proj1.html')
然后,使用templates
这样,所有模板都位于let input = document.getElementById('input');
setStorage = () => {
localStorage.setItem('name', input.value);
}
//On your second HTML
getStorage = () => {
localStorage.getItem('name');
}
目录中,这是Flask的默认目录。如果您坚持使用单独的目录,请检查以下答案的更新:How to reference a html template from a different directory in python flask
答案 1 :(得分:0)
我还找到了一个有趣的答案:How to dynamically select template directory to be used in flask?
检查答案表IgnasButėnas非常有趣,他引用了jinja2.FileSystemLoader类,在此处也进行了更详细的说明:Jinja API
还在Flask Api文档Template folder中解释了以下内容: