1

通过导入 flask-nav 并使用以下内容,我在我的 flask-bootstrap 应用程序中显示了一个导航栏:

@nav.navigation()
def mynavbar():
    return Navbar(
        'MyCompany',
        View('Main', 'index'),
        View('Config', 'config'),
        View('Help', 'help')
    )

但是我一辈子都找不到如何将文本“MyCompany”换成图像,例如 img/mylogo.png 。谁能告诉我怎么做?

4

2 回答 2

2

我对此并不完全满意,因为我认为解决方案应该简单得多,但这有效:

import dominate
from dominate.tags import img

nav = Nav()
branding = img(src='static/img/myimage.png')

@nav.navigation()
def mynavbar():
    return Navbar(
    branding,
    View('Main', 'index'),
    View('Config', 'config'),
    View('Help', 'help')
)


nav.init_app(app)

例如,仅将 html 字符串放入其中的问题<img src="myimage.png">在于,该字符串被打印出来,而不是被解释为应该显示的元素。支配包似乎克服了这一点。

于 2017-10-05T21:46:19.340 回答
0

我的答案不是 100% 完整,而是我目前所拥有的。我正在做的是根据网站显示图像

我创建的 nav.py 如下所示

nav = [
    {'name': 'Home', 'url': '/'},
    {'name': 'About', 'url': 'about'},
    # {'name': 'pycURL', 'url': 'pythoncurl'},
    {'name': 'Contact', 'url': 'contact'},
    # {'name': 'cartest', 'url': 'bob'},
    # {'name': 'socialtest', 'url': 'social'},
    {'name': 'Search', 'url': 'search'},
    # {'name': 'Searchtest2', 'url': 'search2'},
    {'name': 'layouttest', 'url': 'layouttest'},
    # {'name': 'Login', 'url': 'userauth'}
]

然后我将导航导入views.py并添加到每条路线(我还没有测试过没有添加导航到每条路线)

@app.route('/social')
def social():
    """Renders the about page."""
    return render_template(
        'social.html',
        title='socialicons',
        year=datetime.now().year,
        message='test',
        #import nav
        nav=nav
    )

然后在 layout.html 我在 for 循环中调用 nav

    <ul class="nav navbar-nav">
        {% for link in nav %}
            <li><a href="{{ link.url }}" class="btn-large">{{ link.name }}</a></li>
        {% endfor %}
    </ul>

我将 layout.html 扩展到我希望应用布局的所有页面

{% extends 'layout.html' %} 

在页面顶部

当我想向导航添加新链接时,几乎复制并粘贴新行并更改内容以匹配新路线,它将适用于每个页面。

为什么我回答这个问题是因为我现在正在做的事情就像你想要的那样,但我想让它在类似的系统中工作。我的目标是根据页面动态地将不同的图像应用到导航栏。

于 2020-03-16T05:55:08.487 回答