zoukankan      html  css  js  c++  java
  • 【简说Python WEB】Bootstrap

    系统环境:Ubuntu 18.04.1 LTS

    Python使用的是虚拟环境:virutalenv

    Python的版本:Python 3.6.9

    【简说Python WEB】Bootstrap

    Bootstrap的导航组件应用

    安装bootstrap:

    $ pip install flask-bootstrap
    

    bootstrap在flask web应用中实例初始化,需要如下代码 :

    from flask_bootstrap import Bootstrap
    #...
    bootstrap =Bootstrap(app)
    

    Flask web应用的源码hello.py如下:

    from flask_bootstrap import Bootstrap
    from flask import render_template
    from flask import Flask
    
    app = Flask(__name__)
    bootstrap =Bootstrap(app)
    
    
    @app.route('/')
    @app.route('/user/<name>')
    def user(name):
        return render_template('user.html', name=name)
    
    if __name__ == '__main__':
            app.run(host='0.0.0.0', port=9000)
    

    调用的user.html模板代码:

    {% extends "bootstrap/base.html" %}
    
    {% block title %}zsdblog{% endblock %}
    
    {% block navbar %}
    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">ZSD博客</a>
        </div>
    
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">技术文章 <span class="sr-only">(current)</span></a></li>
            <li><a href="#">论坛</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">MySQL数据库 <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">MySQL基础篇</a></li>
                <li><a href="#">MySQL性能篇</a></li>
                <li><a href="#">MySQL高可用</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">MySQL源码分析</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">MySQL 前沿趋势</a></li>
              </ul>
            </li>
          </ul>
          <form class="navbar-form navbar-left">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">提交</button>
          </form>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#">关于我</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>
    
    {% endblock %}
    
    {% block content %}
    <div class="container">
            <div class="page-header">
            <h1>您好, {{ name }},欢迎来到我的博客!</h1>
        </div>
    </div>
    {% endblock %}
    

    其中:

    • {% extends "bootstrap/base.html" %}导入bootstrap骨架,引入Bootstrap所有CSS和JavasScript文件。

    定义三个区块,title,navbar,content。分别代表标题区域,导航区域内容区域。

    其中导航区域,引入了导航组件,案例具体参考的官网:https://v3.bootcss.com/components/。有兴趣的同学,都可以去复用上述的组件。

    呈现的效果如下:

    404,500错误页面定制化

    hello_error.py

    • 需要添加的自定义错误的代码,如下:
    @app.errorhandler(404)
    def page_not_found(e):
        return render_template('404.html'), 404
    
    
    @app.errorhandler(500)
    def internal_server_error(e):
        return render_template('500.html'), 500
    

    添加templates/base.html基础基类页面

    {% extends "bootstrap/base.html" %}
    
    {% block content %}
    <div class="container">
        {% block page_content %}{% endblock %}
    </div>
    {% endblock %}
    
    {% block scripts %}
    {{ super() }}
    {% endblock %}
    

    上述这个模板,可以看到我定义了一个新的区块,叫做page_content。下面可以引用。

    templates/404.html`添加404模板页面:

    {% extends "base.html" %}
    
    {% block title %}ZSD博客 - 页面没有找到{% endblock %}
    
    {% block page_content %}
    <div class="page-header">
        <h1>404错误,页面没有找到</h1>
    </div>
    {% endblock %}
    

    templates/500.html添加500模板页面:

    {% extends "base.html" %}
    
    {% block title %}ZSD博客 - 500错误{% endblock %}
    
    {% block page_content %}
    <div class="page-header">
        <h1>500错误,内部服务错误</h1>
    </div>
    

    效果如下:

  • 相关阅读:
    MSIL实用指南-加载null、string、long、float、double等值
    MSIL实用指南-加载int值
    MSIL实用指南-IL版hello world
    中文编程语言Z语言开源正式开源!!!
    Lisp永远成不了编程主流语言
    TKT中文编程语言简介
    Anaconda+django写出第一个web app(八)
    Anaconda+django写出第一个web app(七)
    Anaconda+django写出第一个web app(六)
    Anaconda+django写出第一个web app(五)
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/12526891.html
Copyright © 2011-2022 走看看