首先,针对上一笔记出出现的问题解释一下。书上的是
from flask.ext.bootstrap import Bootstrap试了,不成功。搜了一下,更改为
from flask_bootstrap import Bootstrap然后,书上说使用flask-bootstrap的模板。我在目录下找了半天,也搜了一下。最后在项目目录的\venv\Lib\site-packages\flask_bootstrap\templates\bootstrap找到了。
一共安装了flask-bootstrap,flask-bootstrap3,flask-bootstrap4这三个版本。使用第一个版本的并没有和书本出西安一样的图,没有效果。使用了flask-bootstrap3,出来了一半,导航栏倒是出来了,但是下面的body没了。研究了一下,是书本上的和我安装的flask-bootstrap3的base.html模板有些出入。放出我修改后的代码。
{% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="nav-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-taget=".navbar-collapse"> <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="/">Flasky</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="/">Home</a> </li> </ul> </div> </div> </div> {% endblock %} {% block content %} <div class="container"> {% block body %} <h1>hello,{{name}}!</h1> {% endblock %} </div> {% endblock %}运行图:
自定义错误页面
@app.errorhandler(404) def pag_not_found(e): return render_template('404.html'),404 @app.errorhandler(500) def pag_not_found(e): return render_template('500.html'),500在templates文件下创建一个base.html的模板,用来给404和500当模板
{% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="nav-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-taget=".navbar-collapse"> <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="/">Flasky</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="/">Home</a> </li> </ul> </div> </div> </div> {% endblock %} {% block content %} <div class="container"> {% block body %} {% endblock %} </div> {% endblock %}404.html的代码:
{% extends "base.html" %} {%block title %}Flask -Page Mot Found{% endblock %} {% block content %} <div class="container"> {% block body %} <h1>Not Found</h1> {% endblock %} </div> {% endblock %}之前写的user.html也可修改使用这个模板,修改后为
{% extends "base.html" %} {% block title %}Flasky{% endblock %} {% block content %} <div class="container"> {% block body %} <h1>hello,{{name}}!</h1> {% endblock %} </div> {% endblock %}接下来是链接。粗略说一下,对于包含可变部分的动态路由,在模板中构建正确的url有困难,直接编写url会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板的连接可能会失效。
url_for()辅助函数可以使用程序url映射中保存的信息生成url。使用url_for()生成动态地址时,将动态部分作为关键字参数传入。例如url_for('user',name='john',_external=True)的返回结果是http://localhost:5000/user/john
函数能将任何额外参数增加到查询字符串中。()
静态文件
定义收藏夹图标(似乎有些问题无法显示)
{% block head %} {{super()}} <link rel="shortcut icon" href="{{url_for('static',filename='favicon.ico')}}" type="image/x-icon"> <link rel="icon" href="{{url_for('static',filename='favicon.ico')}}" type="image/x-icon"> {% endblock %}使用flask-moment本地化日期和时间
首先要安装这个库,初始化
from flask_moment import Moment moment=Moment(app)在base.html增加
{% block js_base %} {{super()}} {{moment.include_moment()}} {% endblock %}py文件中修改
@app.route('/') def index(): return render_template('index.html',current_time=datetime.utcnow())index.html修改
<p>The local date and time is {{ moment(current_time).format('LLL') }}</p> <p>That was {{ moment(current_time).formNow(refresh=True) }}</p>后面检测半天不能运行,导航没有了,检查了发现是extends导错了。
这段时间要学其他的了,一周后在学这个。要进行安卓的学习,stm32的学习还有等等的学习。
