flask笔记一
最近学习flask,由于web开发方面接触的并不是很多,所以看官方文档有点焦头烂额,好多的概念不理解。
《Flask web 开发》比较基础,先用这本书做个入门。
1、Flask实例化对象用来接收客户端的所有请求。
from flask import Flask
app = Flask(__name__)
2、路由实现URL和python函数之间的映射,应用python中的修饰器。
@app.route('/')
def index():
return '<h1>Hello World!</h1>
2.1 定义路由中的动态名字,用"<>"。
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
2.2 路由中的动态部分默认为字符串,不过也可以使用其他类型。
int、float、path类型。
path 类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分。
3、程序实例用run方法启动 Flask 集成的开发 Web 服务器。
if __name__ == '__main__':
app.run(debug=True)#debug=true是启动调试模式。
4、模板与渲染模板
模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请
求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程
称为渲染。为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎。
4.1 flask在默认情况下,会在该目录下的templates文件夹中找模板,所以出于规范,需要将模板写到该文件夹中。
4.2 flask通过render_template()方法将Jinja2渲染模板集成到程序中,render_template 函数的第一个参数是
模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。
5、Jinja2中涉及到的变量过滤器
过滤器就是在变量之后,用竖线隔开,给变量添加一些功能。下面是Jinja2中一些常见的过滤器:
6、Jinja2中的控制结构
条件控制语句
{%if xxx%} {% if user %}
pass Hello,{{user}}!
{%else%} >>>>> {% else %}
pass Hello,Stranger!
{%endif%} {% endif %}
循环语句
{% for %} {% for comment in comments %}
pass >>>>> {% <li>{{ comment }}</li> %}
{% endfor %} {% endforr %}
Jinja2支持宏,类似与python中的函数
{% macro render_comment(comment) %}
<li>{{ comment }}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{ render_comment(comment) }}
{% endfor %}
</ul>
上面的例子就相当于python中定义一个render_comment(comment)函数,只是关键字不同,并且加入一个结束标识。
其中macro为关键字,当宏结束时用endmacro表示。一般情况下,宏都会重复使用,所以将重复使用的代码写入单独的文件,
为模板的调用提供方便;另一种重复代码使用的方式是模板继承,关键字extends表示继承,如果衍生模板需要继承基模板中的内容,用
super()方法获取基模板中的内容。下面是继承的小例子:
基模板 base.html
<html>
<head>
{% block head %}
<title>{% block title %}{% endblock %} - My Application</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
衍生模板
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style>
</style>
{% endblock %}
{% block body %}
<h1>Hello, World!</h1>
{% endblock %}
flask笔记一的更多相关文章
- flask笔记(三)Flask 添加登陆验证装饰器报错,及解析
Flask 添加登陆验证装饰器报错,及解析 写这个之前,是想到一个需求,这个是关于之前写Flask笔记(二)中的一个知识点,路由相关 需求为 : 有一些页面必须是登陆之后才能访问的,比如Shoppin ...
- Flask笔记1
Flask笔记 首先明确一下,要运行一个动态网页,我们需要 一个 Web 服务器来监听并响应请求,如果请求的是静态文件它就直接将其返回,如果是动态 url 它就将请求转交给 Web 应用. 一个 We ...
- Flask笔记:RESTful
RESTful是用于前台和后端进行通信的一种规范或者说一种风格,采用的是HTTP和HTTPS协议,数据传输的格式使用的都是JSON,而不是XML.通常,RESTful的URL中只有名词,没有动词,而且 ...
- Flask笔记(一)
first_flask_project.py # 从flask这个包中导入Flask这个类 # Flask这个类是项目的核心,以后很多操作都是基于这个类的对象 # 注册url.注册蓝图等都是基于这个类 ...
- flask笔记3-模板
flask框架使用jinja2模板引擎.简单的说,模板就是一个纯html文件中夹杂着占位符,在渲染模板时用真实变量值替换占位符,就形成了最终的前台页面. 1.模板存放位置: 默认情况下,flask在根 ...
- flask笔记2-程序的基本结构
第一个flask web程序 1.初始化(所有flask程序都必须创建一个程序实例,程序实例是Flask类的对象): from flask import Flask app = Flask(__nam ...
- flask笔记1-安装
1.创建应用的根目录: 2.在根目录下创建独立的虚拟python运行环境,创建完成后当前目录会有一个文件夹,即该独立环境(使用--no-site-pachages参数将不会复制任何系统python环境 ...
- flask笔记---url、变量规则
1.路由: route() 装饰器用于把一个函数绑定到一个 URL,可以动态变化 URL 的某些部分,还可以为一个函数指定多个规则,从而方便用户访问与记忆. 例子: @app.route('/') # ...
- flask笔记二
web表单 web表单是浏览者和网之间的一个互动平台,完成浏览器和服务器之间的数据交互. 1.用Flask-WTF来处理表单 (1)在根目录下编辑扩展配置--config.py CSRF_ENABLE ...
随机推荐
- 结构体的vector resize()与初始化
序: 我们在使用vector的时候可以自定义里面的数据类型.例如这样: struct Edge{ int from; int to; int weight; }; vector<Edge> ...
- [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities
题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...
- HAProxy的三种不同类型配置方案
haproxy是一款功能强大.灵活好用反向代理软件,提供了高可用.负载均衡.后端服务器代理的功能,它在7层负载均衡方面的功能很强大(支持 cookie track, header rewrite等等) ...
- python requests 模拟登陆网站,抓取数据
抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据. 首先我们需要通过手动方式来登陆一 ...
- maven 热部署至tomcat
1.配置tomcat的界面访问账号和权限./tomcat/conf目录下tomcat-users.xml添加 这里是根据自己的需求添加的一个角色权限 <role rolename="a ...
- 基于java的正则表达式
正则表达式概念 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描 ...
- Ultimus BPM 房地产与建筑行业应用解决方案
Ultimus BPM 房地产与建筑行业应用解决方案 行业应用需求 房地产与建筑行业客户业务特点是集团化管控,多区域.多项目.多业态管理,而行业业务往往项目周期长,涉及专业复杂,客户越来越重视管理和跟 ...
- 【Spark2.0源码学习】-6.Client启动
Client作为Endpoint的具体实例,下面我们介绍一下Client启动以及OnStart指令后的额外工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/bin/jav ...
- eclipse hibernate导出数据库实体类
打开eclipse->help->Eclipse Marketplace->查找hibernate->安装如下插件 只要安装其中一个,hibernate tool即可: 安装完 ...
- Customer segmentation – LifeCycle Grids, CLV and CAC with R(转)
We studied a very powerful approach for customer segmentation in the previous post, which is based o ...