我是Flask的新手。我将index1.html作为主页。我添加了一个带有其他html页面链接的导航栏。我该怎么办?
nav>
<button type="button" id="nav-toggle" onclick="$('nav ul').toggle()">☰MENU</button>
<ul>
<li class="active"><a href="index1.html" class="nav_tab" id="_a">Overview</a></li>
<li><a href="search.html" class="nav_tab" id="_b">Search</a></li>
</ul>
</nav>
html页面位于template文件夹中。 “概述”链接应指向主页(index1.html),而“搜索”应转到search.html页面。如何在烧瓶中实现此目的? 我的routes.py看起来像这样:
from flask import render_template
from tomvar import app
@app.route('/')
@app.route('/index')
def index():
return render_template('index1.html')
答案 0 :(得分:1)
templates文件夹中的HTML页面必须在route.py中的某些路由后面,因此您应该在HTML href标签中定义路由,就像这样。单击示例会将您带到/search
,后面将打开search.html
页。
<li class="active"><a href="/search">Example</a></li>
第二个选项
或者对此有另一种解决方案,可以使用url_for生成url到应用程序中定义的路由。
routes.py:
from flask import Flask, request, url_for, redirect, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/index2', methods=['GET', 'POST'])
def index_func():
if request.method == 'POST':
# do stuff when the form is submitted
# redirect to end the POST handling
# the redirect can be to the same route or somewhere else
return redirect(url_for('index'))
# show the form, it wasn't submitted
return render_template('index2.html')
templates / index.html:
<!doctype html>
<html>
<body>
<p><a href="{{ url_for('index_func') }}">Check out</a></p>
</body>
</html>