• Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏


    一、Bootstrap

      Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。

      Python中,同样可以使用Bootstrap。

      1. 导入Bootstrap库

    from flask_bootstrap import Bootstrap

      2. 实例化

    Bootstrap(app)

      Samply.py

    # coding:utf-8
    from flask import Flask,render_template,request,url_for
    from flask_bootstrap import Bootstrap
    
    app = Flask(__name__)
    Bootstrap(app)
    
    @app.route('/')
    def home():
        return render_template('home.html',title_name = 'welcome')
    
    @app.route('/service')
    def service():
        return 'service'
    
    @app.route('/about')
    def about():
        return 'about'
    
    if __name__ == '__main__':
        app.run(debug=True)

      3. 定义块内容

      home.html

    {% extends 'bootstrap/base.html' %}  #声明继承
    {% import '_macro.html' as ui %}
    
    {% block title %}{{ title_name }}{% endblock %}
    
    {% block content %}
        <div class="page-header">
            <div class="container">
                <h1>{{ self.title() }}</h1>
            </div>
        </div>
        <div class="container">
        {{  ui.input('username') }}
        {{  ui.input('password',type='password') }}
        </div>
    {% endblock content %}
    
    {% block head %}
        {{ super() }}
        {% include 'includes/_head.html' %}
    {% endblock %}
    

      这时候我们看一下,运行出来是什么样子

    ------------------------------------------------------------------------------------------------

      基本的内容有了,如果我们想要加上一个标题栏

      可以使用Flask-Nav扩展,如何使用呢?

      1. 导入库

    from flask_nav import Nav
    from flask_nav.elements import *

      2. 实例化并注册一个导航栏

    nav=Nav()
    nav.register_element('top',Navbar(u'Flask入门',
                                        View(u'主页','home'),
                                        View(u'关于','about'),
                                        Subgroup(u'项目',
                                                 View(u'项目一','about'),
                                                 Separator(),
                                                 View(u'项目二', 'service'),
                                        ),
    ))

      3. 初始化这个实例

    nav.init_app(app)

      以上这些都是在Samply.py文件里

      4. 渲染并定义成块,home.html

    {% block navbar %}
        {{ nav.top.render() }}
    {% endblock %}

      这时候我们看一下,运行出来是什么样子

      5. 增加样式表

      这个时候我们发现配色太单调了,这时候我们可以引用 BootstrapCDN (地址)的CSS样式表,只要把地址填入href中就可以

        不改变原head的情况下,又增加css样式表

    {% block styles %}
        {{ super() }}
        <link rel="stylesheet"
              href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/darkly/bootstrap.min.css">
    {% endblock %}

       这时候我们看一下,运行出来是什么样子

    -------------------------------完成@@-----------------------------------

    参考文档:

    1. Bootstrap中文网

    2. Flask-Nav 文档

    3. W3C Bootstrap教程

    4. BootstrapCDN页面

    附录:

    Sample.py

    # coding:utf-8
    from flask import Flask,render_template,request,url_for
    from flask_bootstrap import Bootstrap
    from flask_nav import Nav
    from flask_nav.elements import *
    app = Flask(__name__)
    Bootstrap(app)
    nav=Nav()
    nav.register_element('top',Navbar(u'Flask入门',
                                        View(u'主页','home'),
                                        View(u'关于','about'),
                                        Subgroup(u'项目',
                                                 View(u'项目一','about'),
                                                 Separator(),
                                                 View(u'项目二', 'service'),
                                        ),
    ))
    
    nav.init_app(app)
    @app.route('/')
    def home():
        return render_template('home.html',title_name = 'welcome')
    
    @app.route('/service')
    def service():
        return 'service'
    
    @app.route('/about')
    def about():
        return 'about'
    
    @app.template_test('current_link')
    def is_current_link(link):
        return link == request.path
    
    if __name__ == '__main__':
        app.run(debug=True)

     home.html

    {% extends 'bootstrap/base.html' %}
    {% import '_macro.html' as ui %}
    
    {% block title %}{{ title_name }}{% endblock %}
    
    {% block content %}
        <div class="page-header">
            <div class="container">
                <h1>{{ self.title() }}</h1>
            </div>
        </div>
        <div class="container">
        {{  ui.input('username') }}
        {{  ui.input('password',type='password') }}
        </div>
    {% endblock content %}
    
    {% block head %}
        {{ super() }}
        {% include 'includes/_head.html' %}
    {% endblock %}
    
    {% block styles %}
        {{ super() }}
        <link rel="stylesheet"
              href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/darkly/bootstrap.min.css">
    {% endblock %}
    
    {% block navbar %}
        {{ nav.top.render() }}
    {% endblock %}

     _macro.html

    {# 定义宏 #}
    {% macro input(name,value='',type='text',size=20) %}
        <input type="{{ type }}"
            name="{{ name }}"
            value="{{ value }}"
            size="{{ size }}"/>
    {% endmacro %}

  • 相关阅读:
    559. N叉树的最大深度
    999. 车的可用捕获量
    1051. 高度检查器
    238. 除自身以外数组的乘积
    【Go】Go语言的%d,%p,%v等占位符的使用
    【Java】commons-lang3中DateUtils类方法介绍
    【Java】时间戳与Date相互转换
    【Linux】crontab定时任务用用法
    【Java】使用Lambda排序集合
    【PBFT】拜占庭容错
  • 原文地址:https://www.cnblogs.com/wongbingming/p/6813221.html
Copyright © 2020-2023  润新知