首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask-nav不适用于flask-bootstrap示例应用程序

flask-nav不适用于flask-bootstrap示例应用程序
EN

Stack Overflow用户
提问于 2018-03-29 01:18:34
回答 2查看 2.2K关注 0票数 0

我正在尝试重新创建这个随flask-bootstrap提供的示例应用程序,但在渲染导航栏时遇到了问题。我得到错误: inja2.exceptions.UndefinedError:'flask_nav.Nav object‘没有'fronend_top’属性

示例应用程序在这里:https://github.com/mbr/flask-bootstrap/tree/master/sample_app

flask-nav示例如下:http://pythonhosted.org/flask-nav/getting-started.html#rendering-the-navbar

据我所知,我正在做的似乎是正确的,但我猜导航没有被传递到网页上下文中?不确定。

这是我的server.py

代码语言:javascript
复制
from flask import Blueprint, render_template, flash, redirect, url_for
from flask_bootstrap import __version__ as FLASK_BOOTSTRAP_VERSION
from flask_bootstrap import Bootstrap
from flask_nav.elements import Navbar, View, Subgroup, Link, Text, Separator
from markupsafe import escape
from flask_nav import Nav
from forms import SignupForm
from flask import Flask
#from nav import nav


frontend = Blueprint('frontend', __name__)

# We're adding a navbar as well through flask-navbar. In our example, the
# navbar has an usual amount of Link-Elements, more commonly you will have a
# lot more View instances.
nav = Nav()
nav.register_element('frontend_top', Navbar(
    View('Flask-Bootstrap', '.index'),
    View('Home', '.index'),
    View('Forms Example', '.example_form'),
    View('Debug-Info', 'debug.debug_root'), ))


# Our index-page just shows a quick explanation. Check out the template
# "templates/index.html" documentation for more details.
@frontend.route('/')
def index():
    return render_template('index.html', nav=nav)



app = Flask(__name__)

app.register_blueprint(frontend)
bootstrap = Bootstrap(app)
nav.init_app(app)

app.run(debug=True)

下面这一行在我的base.html中抛出了错误

代码语言:javascript
复制
{% block navbar %}
{{nav.fronend_top.render()}}
{% endblock %}

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2018-03-29 01:34:53

我可以使用这个:https://github.com/mbr/flask-nav/blob/master/example/.py

这个是:http://pythonhosted.org/flask-nav/getting-started.html#rendering-the-navbar

来创建一个有效的简化版本。我从初始化示例中的create_app方法开始,该方法有效,然后删除了下面示例中的方法。也许这与它是一张蓝图有关?所以它没有导航对象?

代码语言:javascript
复制
from flask import Blueprint, render_template, flash, redirect, url_for
from flask_bootstrap import __version__ as FLASK_BOOTSTRAP_VERSION
from flask_bootstrap import Bootstrap
from flask_nav.elements import Navbar, View, Subgroup, Link, Text, Separator
from markupsafe import escape
from flask_nav import Nav
from forms import SignupForm
from flask import Flask
#from nav import nav
app = Flask(__name__)

nav = Nav()
topbar = Navbar('',
    View('Home', 'index'),
)
nav.register_element('top', topbar)


# not good style, but like to keep our examples short
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/products/<product>/')
def products(product):
    return render_template('index.html', msg='Buy our {}'.format(product))

@app.route('/about-us/')
def about():
    return render_template('index.html')


# Shows a long signup form, demonstrating form rendering.
@app.route('/example-form/', methods=('GET', 'POST'))
def example_form():
    form = SignupForm()

    if form.validate_on_submit():
        flash('Hello, {}. You have successfully signed up'
              .format(escape(form.name.data)))

        # In a real application, you may wish to avoid this tedious redirect.
        return redirect(url_for('.index'))

    return render_template('signup.html', form=form)


nav.init_app(app)
bootstrap = Bootstrap(app)
app.run(debug=True)
票数 0
EN

Stack Overflow用户

发布于 2018-12-21 13:05:43

你是在用flask-boostrap4尝试这个吗?如果是这样,我发现它的导航栏渲染器是损坏的,并导致与您发现的相同的错误。使用flask-boostrap v3和BS3似乎可以解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49540577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档