我目前正在创建基于Flask,Bootstrap和Flask-Nav扩展的WebApp。 我创建了一个动态导航栏,它可以正常工作:
#custom navbar
def dynamic_navbar():
navbar = Navbar(title='navbar_titel')
navbar.items = [View('FirstPage', 'first_page')]
navbar.items.append(
Subgroup('Dropdown1',
View('Sub1', 'sub1_page'),
View('Sub2', 'sub2_page'),
View('Sub3', 'sub3_page')
)
)
navbar.items.append(View('SecondPage', 'second_page'))
return navbar
#register navbar to app
nav.register_element('top', dynamic_navbar)
我还更改了默认的BootstrapRenderer,这样我就可以轻松更改导航栏引导程序模板
#Coustom Navbar Renderer to render after certain bootstrap navbars templates
class CustomRenderer(BootstrapRenderer):
def visit_Navbar(self, node):
nav_tag = super(CustomRenderer, self).visit_Navbar(node)
nav_tag['class'] += 'navbar navbar-inverse'
return nav_tag
#register renderer to app
register_renderer(app, 'custom', CustomRenderer)
这一切都运行正常,我可以轻松地将它整合到我的主模板中作为一个块:
{% extends "bootstrap/base.html" %}
{% block navbar %}
{{nav.top.render(renderer='custom')}}
{% endblock %}
{% block content %}{% endblock %}
所以这是最后的问题。我想将导航栏内部的一些元素(而不是所有元素)向右对齐(例如:仅查看(Sub3 ...)。我知道如何直接在HTML文档中执行此操作,但不知何故有难以思考在我的Flask应用程序中执行此操作的简单方法,而不会失去动态导航栏构造或创建许多新类。
我可以更轻松地更改渲染器或创建View元素的子类吗?