Flask为什么要在两个不同的目录中查找模板?

问题描述 投票:0回答:1

我正在开发第一个基于Flask的Python网络应用。它在本地运行良好,但是当我上载它时,文件路径存在问题。

Flask应用程序当前正在以下地址查找两个不同的页面:

mysite.org/flaskapp/mysite.org/flaskapp/about /

指向首页的链接正常。但是“关于”页面的链接会跳至mysite.org/about/的目录。

我查看了很多stackoverflow问题和其他资源,并且尝试使用template_folder参数,但是我无法说服该应用程序在两个文件的正确位置查找。

这里是来自应用程序中根文件的映射:

@app.route('/')
@app.route('/home')
def home():
    return render_template('home.html', posts=posts)

@app.route('/about')
def about():
    return render_template('about.html', title='About')

if __name__ == '__main__':
    app.run(debug=True)

这是html模板的相关部分:

          <div class="collapse navbar-collapse" id="navbarToggle">
            <div class="navbar-nav mr-auto">
              <a class="nav-item nav-link" href=".">Home</a>
              <a class="nav-item nav-link" href="./about">About</a>
            </div>
python templates flask
1个回答
1
投票

[我假设您正在使用标准的Jinja2模板,这意味着您应该使用url_for()而不是在模板中对URL路径进行硬编码。

url_for()将端点的函数名称作为参数,并返回URL的本地路径,这意味着它为您完成了所有艰苦的工作。将url_for()添加到模板时,它看起来像这样:

<div class="collapse navbar-collapse" id="navbarToggle">
    <div class="navbar-nav mr-auto">
        <a class="nav-item nav-link" href="{{ url_for('home') }}">Home</a>
        <a class="nav-item nav-link" href="{{ url_for('about') }}">About</a>
    </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.