Python Flask模块

模块是一个包含响应文本的文件,其中包含占用位变量表示的动态部分,其具体值只在请求的上下文中才知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模块,Flask使用一个名为Jinja2的强大模板引擎。

一、Jinja2模板引擎

形式最简单的Jinja2模板就是一个包含响应文本的文件。

<h1>Hello,World!</h1>
<h1>Hello,{{name}}!</h1>

1、渲染模板

默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板。在下一个hello.py版本中,要把前面定义的模板保存在templates文件夹中,并分别命名为index.html和user.html。

#!/usr/bin/env python

from flask import Flask,render_template
app = Flask(__name__)

@app.route(‘/‘)
def index():
    return render_template(‘index.html‘)

@app.route(‘/user/<name>‘)
def user(name):
    return render_template(‘user.html‘,name=name)

if __name__ == ‘__main__‘:
    app.run()

Flask提供的render_template函数把Jinja模块引擎集成到了程序中。

2、变量

模板中使用的{{name}}结构表示一个变量,它是一种特殊的占位符,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取。

Jinja2能识别所有类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。在模板中使用变量的一些实例如下

<p>a value from a dictionary: {{ mydict[‘key‘] }}</p>
<p>a value from a list:{{ mylist[3] }}</p>
<p>a value from a list,with a varliable index:{{ mylist[myintavr] }}</p>
<p>a value from a objects method:{{ myobj.somemethod() }}</p>

Jinja2变量过滤器

过滤器名 说明
safe 、渲染时不转义
capitalize
把值得首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首位空格去掉
striptags 渲染之前把值中所有HTML标签都删除

3、控制结构

在模板中使用条件控制语句:

{% if user %}
    Hello,{{ user }}!
{% else %}
    Hello,Stranger!
{% endif %}
<ul>
    {% for commet in commets %}
        <li>{{ commet }}</li>
    {% end for %}
</ul>

Jinja2还支持宏,类似于Python代码中的函数。例如:

{% macro render_commet(commet) %}
    <li>{{ commet }}</li>
{% endmacro %}

<ul>
    {% for commet in commets %}
        {{ render_commet(commet) }}
    {% endfor %}
</ul>

为了重复使用宏,我们可以将其保存在单独的文件中,然后在需要使用的模板中导入:

{% import ‘macros.html‘ as macros %}
<ul>
    {% for commet in commets %}
        {{ macros.render_commet(commet) }}
    {% endfor %}
</ul>

另一种重复使用代码的强大方式是模板继承,它类似于Python代码中的类继承。首先创建一个名为base.html的基模板:

<html>
<head>
    {% block head %}
    <title>{% block title %}{% endblock %} - My Application</title>
    {% endblock %}
</head>
<body>
    {% block body %}
    {% endblock %}
</body>
</html>

二、使用Flask-Bootstrap集成Twitter Bootstrp

Bootstrap是客户端架构,因此不会直接涉及服务器。服务器要做的知识提供引用了Bootstrap层叠样式表(CSS)和Javascript文件的HTML响应,并在HTML/CSS和Javascript代码中实例化所需组件。这些操作最理想的执行场所就是模板。

#初始化 Flask-bootstrap

from flask.ext.bootstrap import Bootstrap
#...
bootstrap = Bootstrap(app)

初始化Flask-Bootstrap之后,就可以在程序中使用一个包含所有Bootstrap文件的基模板。

{% extends "bootstrap/base.html" %}

{% block title %}Flasky{% endblock %}

{% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle"
            data-toggle="collapse" data-target=".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">
    <div class="page-header">
        <h1>Hello,{{ name }}!</h1>
    </div>
</div>
{% endblock %}

三、自定义错误界面

#自定义错误界面

#!/usr/bin/env python

from flask import Flask,render_template
app = Flask(__name__)

@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

if __name__ == ‘__main__‘:
    app.run()

四:链接

Flask提供url_for()辅助函数,它可以使用程序URL映射中保存的信息生成URL。

url_for()函数最简单的用法是以视图函数名(或者app.add_url_route()定义路由时使用的端点名)作为参数,返回对应的URL。

使用url_for()生成动态地址时,将动态部分作为关键字参数传入。例如,url_for(‘user‘,name=‘john‘,_external=True)

五、静态文件

默认设置下,Flask在程序根目录中名为static的子目录中寻找静态文件。如果需要,可在static文件夹中使用子文件夹存放文件。

#定义收藏夹图标
{% 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本地化日期和时间

Flask-Moment是一个Flask程序扩展,能把moment.js集成到Jinja2模板中。

#初始化Flask-Moment
from flask.ext.moment import Moment
moment = Moment(app)
#引入moment.js库
{% block scripts %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}
#!/usr/bin/env python

from flask import Flask,render_template
app = Flask(__name__)

from datetime import datetime
from flask_moment import Moment

moment = Moment(app)
@app.route(‘/‘)
def index():
    return render_template(‘index.html‘,
                           current_time=datetime.utcnow())

if __name__ == ‘__main__‘:
    app.run()

  

时间: 2024-12-30 03:27:27

Python Flask模块的相关文章

Python:hashlib加密模块,flask模块写登录接口

hashlib模块 主要用于加密相关的操作,(比如说加密字符串)在python3的版本里,代替了md5和sha模块,主要提供 sha1, sha224, sha256, sha384, sha512 ,md5 这些加密方式 import  hashlib m = hashlib.md5()   #用md5加密的方式(md5加密后无法解密),创建一个md5的对象 m.update(b"Hello")  #b代表二进制字节bytes,把字符串hello转成字节,然后加密:用b给一个变量转换

python:接口开发flask模块

一.接口开发的作用 mock接口:模拟功能: 用处: 1.自己模拟要调用的接口,测试自己要模拟的各种情况 2.给别人提供数据,别人调我的接口,我把数据范湖给他 二.flask模块: 1.flask模块是轻量级的web开发框架.可以开发网站,也可以开发接口,主要用来开发接口. 缺点:操作数据库不方便 原文地址:https://www.cnblogs.com/hancece/p/11128309.html

[Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题

http://www.cnblogs.com/mizhon/p/4242073.html [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题 最近想学习一下flask,在安装了flask之后在Eclipse里import flask模块的时候发现会有如下问题: Google了一圈,相应的资料都看了,这几篇有帮助(需FQ),我按照第一个参考设置了一下,红叉仍然没有去掉. 第二个博客是英文的且无图无真相,就没仔细看(但其实是解决了问题的).这里就自

Day5 模块及Python常用模块

模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Module). 注意: 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 简单地说,模块就是一个保存了Python代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码! 模块分为三种: 自定义模块 开源模块 内置模块 使用模块有什么

Python+Flask+MysqL的web建设技术过程

前言 本人在一学期时间实现了Python+Flask+MysqL的web建设,页面具有简单的登录注册发布文章搜索文章等功能. 这篇文章总结了我最近一段时间的学习成果:使用Flask框架搭建一个web service,并在其中加上一些简单的css,js,html等.在本文中以实际的用户模块为例.之所以写这篇文章是因为想要总结自己一学期的学习成果并且与大家分享.由于是新手如有错漏请见谅. 一.使用工具 python3.5 实现此页面所有的static文件.templates文件与py文件 二.完成基

Python Flask+Bootstrap+Jinja2 构建轻量级企业内部系统平台框架

1.最近公司运维需求,学习python flask 满足环境治理系统的开发;入门如下;    环境类型:      Python 2.7.5         获取地址:https://www.python.org/downloads/       Flask  1.0.2               pip 安装使用模快如下:           flask==1.0.2           request==1.0.2           Jinja2==2.10           Flas

Python Flask 快速构建高性能大型web网站项目实战

Python Flask 快速构建高性能大型web网站项目实战视频[下载地址:https://pan.baidu.com/s/1cUggNbUvptYz5vvwBhsdrg ] 作为最最流行的Python Web开发的微框架,Flask独树一帜.它不会强迫开发者遵循预置的开发规范,为开发者提供了自由度和创意空间.突然发现这个对自动化运维开发非常有用,发上来,给大家! Python Flask 快速构建高性能大型web网站项目实战视频 project.zip 第1章 课程介绍1.1-1.2课程导学

Python Flask构建微信小程序订餐系统

call--->q-2304636824-q 第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆https://food.54php.cn(使用微信扫码二维码体验下哦横须)一起来演示一下项目.本次课程是严格按照商业系统进行架构开发的,从PC管理员端到小程序会员端,从项目搭建到部署上线,通俗易懂.... 1-1 导学--Python Flask 构建微信小程

Python Flask web入门例子

安装pip -安装完python,需要手动设置pip环境变量,找到python安装目录的Scripts文件夹中就是根目录,比如C:\Python27\Scripts.设置完环境变量即可安装第三方模块了,安装时为了提高速度可以使用阿里镜像,方法如下 打开目录:C:\Users\xxx\AppData\Roaming,xxx是windows用户名 在该目录中新建目录pop,在pop目录中在新建pip.ini,其内容填入下面内容即可 [global] index-url=http://mirrors.