如何使用Flask蓝图修复端点错误 [英] How do I fix an endpoint error with flask blueprints

查看:44
本文介绍了如何使用Flask蓝图修复端点错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习带有蓝图的烧瓶,并且我有以下代码示例:

I am learning flask with blueprints and I have the following code example:

from flask import Flask, render_template, Blueprint, g

bp = Blueprint('language', __name__, url_prefix='/<int:language_id>', static_folder='static')
app = Flask(__name__)


@bp.url_defaults
def add_language_id(endpoint, values):
    if 'language_id' in g:
        values.setdefault('language_id', g.site_id)
    else:
        g.language_id = 1  # English


@bp.url_value_preprocessor
def pull_language_id(endpoint, values):
    g.language_id = values.pop('language_id')


@bp.route('/')
def index():
    return render_template('main.html')


@bp.route('/lang')
def language():
    return render_template('lang.html')

app.register_blueprint(bp)

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

但是我遇到了这个错误:

But I'm getting this error:

werkzeug.routing.BuildError:无法为端点建立URL值['language_id']的语言".您的意思是"language.index"代替?

werkzeug.routing.BuildError: Could not build url for endpoint 'language' with values ['language_id']. Did you mean 'language.index' instead?

这是HTML代码:

<ul>
    <li>
        <a href="{{ url_for('language', language_id=1) }}">English</a>
    </li>
</ul>

如何纠正此错误?

推荐答案

好像您在URL链接中缺少蓝图名称(语言):

Looks like you are missing the Blueprint name (language) in your url link:

从这里:

bp = Blueprint('language', __name__, url_prefix='/<int:language_id>', static_folder='static')

因此,您的链接将需要附加:

So your link will need to be appended:

<a href="{{ url_for('language.language', language_id=1) }}">English</a>

我还建议给它命名不同的名称,以免与您可能具有的任何其他命名约定冲突.

I would also suggest naming it something different so it doesn't conflict with any other naming convention you might have.

这篇关于如何使用Flask蓝图修复端点错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆