python-3.x 如何使用Flask在href链接中链接内部html文件

jv2fixgn  于 2023-02-26  发布在  Python
关注(0)|答案(2)|浏览(242)

我的flask应用程序中有一个导航栏,包含两个元素--主页和提交。我正在尝试将主页的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')

运行应用程序时,出现以下页面:

但是,当我单击主页或登录时,我收到此错误:

我是新来的flask,所以我不明白为什么会发生这种情况。两个html文件都在我的模板文件夹中,但你如何将它们链接在一起,以便当我点击主页或登录时,它会带我到另一个html页面?

sczxawaw

sczxawaw1#

您需要为登录定义单独的路径,以便像这样工作

# 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>
camsedfj

camsedfj2#

正如上面所建议的,我为app.py中的每个视图添加了路由。这是从静态站点(仅限HTML和css)到Flask应用程序的转录。
对于链接,答案由“使用url_for()在Flask中创建动态URL”中的示例提供

from flask import Flask, render_template 

app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html')

@app.route("/resume")
def resume():
    return render_template('resume.html')

@app.route("/books")
def books():
    return render_template('books.html')

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

静态站点中的链接,例如index.html:

<footer>
    <br><a href="resume.html">Resume:</a><br>
    <br><a href="images/Recomendation_Dave_Schultz.jpg">Referances and Recomendations:</a><br>
    <br><a href="mailto:donfox1@mac.com?subject=From ">E-mail:</a><br>
</footer>

flask 版本中的index.html:

<footer>
    <br><a href="{{ url_for('resume') }}"> Resume </a></br>
    <a href="static/images/Recomendation_Dave_Schultz.jpg">Referances and Recomendations:</a>
    <br><a href="mailto:donfox1@mac.com?subject=From ">E-mail:</a><br>
    <a href="{{ url_for('books') }}"> Interesting Books: </a>
</footer>

相关问题