首先,针对上一笔记出出现的问题解释一下。书上的是
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的学习还有等等的学习。