我有一个导航栏在我的flask应用程序两个元素-主页和提交。 我试图将home的href链接到一个特定的html页面,并将提交的href链接到另一个页面。
下面是我的index.html文件:
{% extends "bootstrap/base.html" %}
{% block title %} {% endblock %}
{% block navbar %}
<div class="'navbar navbar-inverse" role="navigation">
<div class="containter">
<div class="navbar-header">
<button type="button" class="navbar-toggle"
data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar">Toggle Navigation</span>
<span class="icon-bar">Toggle Navigation</span>
<span class="icon-bar">Toggle Navigation</span>
</button>
<a class="navbar-brand" href="/">Flask App</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/login"> Home </a></li>
<li><a href="/login"> Login </a></li>
</ul>
</div>
</div>
</div>
{% endblock %}
{% block content %}
<div class="containter">
<div class="page-header">
<h1>Hellooo {{name}}</h1>
</div>
</div>
{% endblock %}
下面是我的login.html文件:
{% extends "index.html" %}
下面是我的app.py文件:
# Import key modules/packages
from flask import (Flask, flash, g, jsonify, redirect, render_template,
request, has_request_context, session, url_for, send_from_directory, abort)
app = Flask(__name__)
app.secret_key = 'my_secret_key'
from flask_bootstrap import Bootstrap
Bootstrap(app)
@app.route('/')
def login():
return render_template('index.html')
当我运行我的应用程序时,我得到以下页面:
但是,当我点击home或login时,我收到了这个错误:
我是新的烧瓶,所以我不明白为什么这是发生。 这两个html文件都在我的模板文件夹,但你如何链接他们在一起,所以当我点击主页或登录它带我到另一个html页面?
那么,您需要定义单独的登录路由,以便像下面这样工作
# app.py
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login')
def login():
return render_template('login.html')
在模板中,您需要像下面这样更改它
<!-- block nav -->
<li><a href="/"> Home </a></li>
<li><a href="/login"> Login </a></li>
<!-- More better way -->
<li><a href="{{ url_for('index') }}"> Home </a></li>
<li><a href="{{ url_for('login') }}"> Login </a></li>