2017-01-18 14:27:06 +08:00
|
|
|
|
# _*_ coding: utf-8 _*_
|
|
|
|
|
|
|
|
|
|
# Flask中的一些定义
|
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
# WSGI: Web服务器网关接口,是一种Web服务使用的协议。
|
|
|
|
|
# 路由: 处理URL和函数之间关系的程序称为"路由"。
|
|
|
|
|
# 视图函数: 类似于index()这样的,被app.route装饰器注册为路由的函数,或者通过app.add_url_rule()添加路由映射关系的函数,被称为视图函数。
|
|
|
|
|
# app.route(): 路由装饰器,可以带参数,参数可以指定数据类型:int/float/path。path类似于字符串,但不将反斜线/当做分隔符。
|
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
|
|
|
|
|
# Flask上下文全局变量
|
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
# current_app: 程序上下文,当前激活程序的程序实例,所有线程公用一个该实例。
|
|
|
|
|
# g: 程序上下文,处理请求时用作临时存储的对象,每次请求都会重设这个变量。
|
|
|
|
|
# request: 请求上下文,请求对象,封装了客户端发出的 HTTP 请求中的内容,不同线程之间互不干扰。
|
|
|
|
|
# session: 请求上下问,用户会话,用于存储请求之间需要“记住”的值的词典。
|
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
|
|
|
|
|
# Flask支持的4种钩子函数
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# before_first_request: 注册一个函数,在处理第一个请求之前运行。
|
|
|
|
|
# before_request: 注册一个函数,在每次请求之前运行。
|
|
|
|
|
# after_request: 注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
|
|
|
|
|
# teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
|
|
|
|
|
# Jinja2模板使用
|
|
|
|
|
# =============================================================================================================================
|
|
|
|
|
# 渲染模板: render_template("user.html", name=name)
|
|
|
|
|
# (1) 变量: {{ name | capitalize }}
|
|
|
|
|
# (2) 控制结构:
|
|
|
|
|
# {% if user %}
|
|
|
|
|
# Hello, {{ user }}!
|
|
|
|
|
# {% else %}
|
|
|
|
|
# Hello, Stranger!
|
|
|
|
|
# {% endif %}
|
|
|
|
|
#
|
|
|
|
|
# <ul>
|
|
|
|
|
# {% for comment in comments %}
|
|
|
|
|
# <li>{{ comment }}</li> {% endfor %}
|
|
|
|
|
# </ul>
|
|
|
|
|
# (3) 宏-类似于函数:
|
|
|
|
|
# {% macro render_comment(comment) %}
|
|
|
|
|
# <li>{{ comment }}</li>
|
|
|
|
|
# {% endmacro %}
|
|
|
|
|
#
|
|
|
|
|
# <ul>
|
|
|
|
|
# {% for comment in comments %}
|
|
|
|
|
# {{ render_comment(comment) }}
|
|
|
|
|
# {% endfor %}
|
|
|
|
|
# </ul>
|
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
|
|
|
|
|
# Jinja2变量过滤器
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# safe: 渲染值时不转义
|
|
|
|
|
# capitalize: 把值的首字母转换成大写,其他字母转换成小写
|
|
|
|
|
# lower: 把值转换成小写形式
|
|
|
|
|
# upper: 把值转换成大写形式
|
|
|
|
|
# title: 把值中每个单词的首字母都转换成大写
|
|
|
|
|
# trim: 把值的首尾空格去掉
|
|
|
|
|
# striptags: 渲染之前把值中所有的 HTML 标签都删掉
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
|
|
|
|
|
# Flask-Bootstrap基模板中定义的块
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# doc: 整个 HTML 文档
|
|
|
|
|
# html_attribs: <html> 标签的属性
|
|
|
|
|
# html: <html> 标签中的内容
|
|
|
|
|
# head: <head> 标签中的内容
|
|
|
|
|
# title: <title> 标签中的内容
|
|
|
|
|
# metas: 一组 <meta> 标签
|
|
|
|
|
# styles: 层叠样式表定义
|
|
|
|
|
# body_attribs: <body> 标签的属性
|
|
|
|
|
# body: <body> 标签中的内容
|
|
|
|
|
# navbar: 用户定义的导航条
|
|
|
|
|
# content: 用户定义的页面内容
|
|
|
|
|
# scripts: 文档底部的 JavaScript 声明
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# WTForms支持的HTML标准字段,注意添加app.config['SECRET_KEY'] = 'hard to guess string'
|
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# StringField 文本字段
|
|
|
|
|
# TextAreaField 多行文本字段
|
|
|
|
|
# PasswordField 密码文本字段
|
|
|
|
|
# HiddenField 隐藏文本字段
|
|
|
|
|
# DateField 值为datatime.data格式的文本字段
|
|
|
|
|
# DateTimeField 值为datatime.datatime格式的文本字段
|
|
|
|
|
# DecimalField 值为decimal.Decimal格式的文本字段
|
|
|
|
|
# IntegerField 值为整数的文本字段
|
|
|
|
|
# FloatField 值为浮点数的文本字段
|
|
|
|
|
# BooleanField 值为True或False的复选框
|
|
|
|
|
# RadioField 一组单选框
|
|
|
|
|
# SelectField 值唯一的下拉列表
|
|
|
|
|
# SelectMultipleField 可选多个值得下拉列表
|
|
|
|
|
# FileField 文件上传字段
|
|
|
|
|
# SubmitField 表单提交按钮
|
|
|
|
|
# FormField 把表单作为字段嵌入另一个表单
|
|
|
|
|
# FieldList 一组指定类型的字段
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
|
|
|
|
|
# WTForms验证函数
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# Email 验证电子邮件地址
|
|
|
|
|
# EqualTo 比较两个字段的值;常用于要求输入两次密码进行确认的情况
|
|
|
|
|
# IPAddress 验证 IPv4 网络地址
|
|
|
|
|
# Length 验证输入字符串的长度
|
|
|
|
|
# NumberRange 验证输入的值在数字范围内
|
|
|
|
|
# Optional 无输入值时跳过其他验证函数
|
|
|
|
|
# Required / DataRequired 确保字段中有数据
|
|
|
|
|
# Regexp 使用正则表达式验证输入值
|
|
|
|
|
# URL 验证 URL
|
|
|
|
|
# AnyOf 确保输入值在可选值列表中
|
|
|
|
|
# NoneOf 确保输入值不在可选值列表中
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
|
|
|
|
|
# uWSGI配置和nginx配置
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|
2017-01-18 14:27:06 +08:00
|
|
|
|
# uwsgi -s /tmp/uwsgi.sock -w MyShow:app --chmod-socket=666
|
|
|
|
|
# server {
|
|
|
|
|
# listen 80;
|
|
|
|
|
# server_name wangluopachong.com;
|
|
|
|
|
#
|
|
|
|
|
# charset utf-8;
|
|
|
|
|
#
|
|
|
|
|
# location / {
|
|
|
|
|
# include uwsgi_params;
|
|
|
|
|
# uwsgi_pass unix:/tmp/uwsgi.sock;
|
|
|
|
|
# }
|
2017-01-18 15:09:08 +08:00
|
|
|
|
# =============================================================================================================================
|