flask web学习记录(2)

xiaoxiao2025-11-11  7

首先,针对上一笔记出出现的问题解释一下。书上的是

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的学习还有等等的学习。

转载请注明原文地址: https://www.6miu.com/read-5039452.html

最新回复(0)