项目页面中的Flask项目URL路径和文件夹路径

时间:2020-07-23 03:46:20

标签: python flask

我对Flask还是陌生的,正在尝试创建一个个人网站作为练习。我正在寻找一个项目页面,我想问关于文件和项目URL路径的以下问题:

  1. 我正在尝试将所有项目页面都放在/projects文件夹中。如何从另一个文件夹render_template来使proj1()函数从/projects/proj1.html而不是/tempates/.proj1.html提取?有没有更好的方法来指定其他文件夹位置?
  2. app.py中,我为@app.route("/projects/project1")硬编码了proj1.html。有什么更好的方法来更改此设置,以便为proj2.htmlproj3.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>

谢谢!还有很多工作要做,但我现在将设置项目页面。

2 个答案:

答案 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中解释了以下内容:

  • template_folder –包含应用程序应使用的模板的文件夹。默认为应用程序根路径中的“模板”文件夹。