我正在开发第一个基于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>
[我假设您正在使用标准的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>