flask 基础语法学习
回顾
#6行flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "HelloWorld!!"
app.run()
1.response
from flask import render_template,redirect,send_file,jsonify
return =httpresponse
render_template
redirect
特殊返回值
1.send_file(文件路径) 打开文件并返回文件内容 Content-Type 文件类型 自动识别
2.jsonify({k:v}) Content-Type:application/json app.config["JSONIFY_MIMETYPE"]
2.request
request.method 请求方式
request.args url参数
print(request.args.to_dict())#转换成字典
request.form FormData 数据
request.json #请求头 Content-Type:application/json 数据序列化至此
request.data 只要请求体中有内容 b"”
request.files 接收FormData中的文件
3.session
from flask import session
app.secret_key=""
session["user"]="username"
4.路由
动态参数
@app.route("/detail/<stu_id>")
def detail(stu_id)
1.endpoint Flask Mapping 路由和视图的指向
2.methods 允许进入视图函数的请求方式
5.初始化配置
Flask(__name__) 中
1.template_folder 模版存放路径
2.static_folder 静态文件存放路径
3.static_url_path 金泰文件访问路径
6.config对象 正式测试环境
2.Flask对象配置
app.config == app.default_config 查看默认配置 及 配置项 class Obj(object):
DEBUG = True app.config.from_object(Obj) # 记住
7.蓝图
Flask蓝图
Blueprint: bp.py
from flask import Blueprint
# 把Blueprint理解为 不能被 Run 的 Flask 对象
bp = Blueprint("bp",__name__,url_prefix="/user") @bp.route("/bp",methods=["GET","Post"])
def my_bp():
return "I am bp in user.py" __init__py
from flask import Flask
from .views import add def create_app():
app=Flask(__name__)
app.register_blueprint(add.add)
return app app.py:
from flask import Flask
from user import bp
from acc import acc
app = Flask(__name__) app.register_blueprint(bp)
app.register_blueprint(acc) if __name__ == '__main__':
app.run(debug=True)
8.特殊装饰器 中间件
@app.before_request # 在请求进入视图函数之前
@app.after_request # 结束视图函数之后,在响应返回客户端之前
def af5(ret): 正常 be1 - be2 - vf - af5 - af4 - af3 - af2 - af1
异常 be1 - af5 - af4 - af3 - af2 - af1 @app.errorhandler(404)
def error404(error_message):
9.CBV
from flask import views class Login(views.MethodView):
def get(self):
pass def post(self):
pass app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login")) endpoint == as_view(name="login") 中的 "login"
jianjin2 模版
{{}} 引用 执行函数
{%%} 逻辑代码 {{ stu_list[0].name }}{{ stu_list.0.age }}
{{ stu_dict }} {% for stu in stu_list %}
<p>{{ stu.name }}{{ stu.get("age") }}{{ stu["gender"] }}</p>
{% endfor %}
#if判断
{% if v["gender"] == "中" %}
男
{% else %}
{{ v["gender"] }}
{% endif %} 自定义标签simple_tag @app.template_global()#全局使用 可选
def ab(a,b):
return a+b
html中引入
{{ ab(4,4) }} 前端执行html
@app.route("/")
def index():
tag = "<input type='text' name='user' value='xiao'>"
return render_template("index.html",tag=tag)
<body> {{ tag|safe }} </body> 后端执行html
from flask import Markup # 导入 flask 中的 Markup 模块
@app.route("/")
def index():
tag = "<input type='text' name='user' value='xiao'>"
# Markup帮助咱们在HTML的标签上做了一层封装,让Jinja2模板语言知道这是一个安全的HTML标签
markup_tag = Markup(tag)
print(markup_tag,type(markup_tag)) return render_template("index.html", tag=markup_tag) 母板
index.html
<body>
<h1>Welcome to My</h1>
<h2>下面的内容是不一样的</h2>
{% block content %} {% endblock %}
<h2>上面的内容是不一样的,但是下面的内容是一样的</h2>
<h1>My is Good</h1>
</body>
login.html
{% extends "index.html"%}
{% block content %}
{% endblock %} include jinja2
login.html
<h4>欢迎登陆</h4>
<form>
用户名:<input type="text" name="user">
密码:<input type="text" name="pwd">
<input type="submit" value="提交">
</form> index.html 文件中的内容 <body> <h1>Welcome to My</h1> {% include "login.html" %}
<h2>上面的内容是不一样的,但是下面的内容是一样的</h2> <h1>My is Good</h1> </body>
flask 上下文管理
分为3个阶段
1,请求进来时,将请求相关的数据放入上下问管理中
2,在视图函数中,要去上下文管理中取值
3,请求响应,要将上下文管理中的数据清除
详细点
请求刚进来, 将request,session封装在RequestContext类中,app,g封装在AppContext类中
并通过LocalStack将requesttext和appcontext放local类中
2,视图函数中,通过localproxy-->偏函数-->locastack-->local取值
3,请求响应时,先执行save.session()在各自执行pop(),将local中的数据清楚
http://www.cnblogs.com/zhaopanpan/p/9457343.html
flask 基础语法学习的更多相关文章
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- Swift基础语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...
- Python 基础语法学习(第一讲)---类的使用
[写在前面]:其实自学python有一段时间了,但是一直没想起来要写博客来记录自己的学习,今天才感觉要写点什么让自己学的更扎实一点,所以从今天开始更新python自学系列,希望看见文章的大佬们可以指点 ...
- Java基础语法学习
Java基础语法学习 1. 注释 单行注释: //单行注释 多行注释: /*多行注释 多行注释 多行注释 多行注释 */ 2. 关键字与标识符 关键字: Java所有的组成部分都需要名字.类名.变量名 ...
- java 基础语法学习01
Java基础语法 注释 初次使用idea时相关配置 new project ->Empty project->进入页面 再选择file->project structure-> ...
- React基础语法学习
React主要有如下3个特点: 作为UI(Just the UI) 虚拟DOM(Virtual DOM):这是亮点 是React最重要的一个特性 放进内存 最小更新的视图,差异部分更新 diff算法 ...
- Go基础语法学习
Go语言基础 Go是一门类似C的编译型语言,但是它的编译速度非常快.这门语言的关键字总共也就二十五个,比英文字母还少一个,这对于我们的学习来说就简单了很多.先让我们看一眼这些关键字都长什么样: 下面列 ...
- Xpath基础语法学习
背景: 之所以学习Xpath,是因为在学习selenium定位页面元素,总是定位不到元素.为了更好的开展自动化测试,先学习下Xpath. 一:Xpath是什么. 1:Xpath是一门在XML文档中查找 ...
- Swift基础语法学习总结一
1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. ...
随机推荐
- Spring+Spring MVC+Mybatis 框架整合开发(半注解半配置文件)
项目结构: (代码里面都有注释) 一.在pom文件中依赖jar包 因为我这里分了模块,所以有父子级的共两个pom文件 父级: <?xml version="1.0" enco ...
- ARMV8体系结构简介
armv8 1.前言 本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述.包含如下的内容: 首先从背景谈起,讲述ARM的发展历程: 之后介绍ARMV8体系结构的基本特征: 介绍A64指令 ...
- 周一02.4变量&垃圾回收机制
一.变量 1. 什么是变量 量:记录事物的某种状态,即事物典型的特征 变:事物的状态是可以发生变化的 2. 为何要用变量 是为了让计算机能够像人一样记录事物的状态 3. 如何用变量 (先定义后引用) ...
- 24G的SSD有什么用
有台12G内存,带24G的SSD的笔记本,系统自带WINDOWS8,最近感觉很慢,就动手把1T的硬盘升级到512的SSD. BIOS里面明明看到24G的SSD,Windows里面就消失了(应该是坏掉了 ...
- tensorflow的基本认识
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/10741013.html 作者:窗户 ...
- python全局解释器GIL
1.什么是进程: 进程是竞争计算机资源的基本单位.对于单核CPU来讲,同一时间只能有一个进程在运行,所以当我们开启多个应用时,操作系统需要根据进程调度算法去在不同的应用程序之间切换,而不同的进程之间切 ...
- spring boot中配置日志log和热部署
Java的日志有很多 个人强烈不推荐log4j ,推荐log4j2和logback 在高并发,多线程的环境下log4j1 的性能和log4j2相比可以用junk来形容 对就是junk.log4j2的 ...
- 使用python对py文件程序代码复用度检查
#!/user/bin/env python # @Time :2018/6/5 14:58 # @Author :PGIDYSQ #@File :PyCheck.py from os.path im ...
- selenium webdriver 如何实现将浏览器滚动条移动到某个位置
说明: 在做selenium webdriver 在做UI 自动化时,有些页面时使用懒加载的形式显示页面图片,如果在不向下移动滚动条时,获取到的图片会是网站的默认图片和真实的图片不相符. 所以研究了 ...
- 安装Cnario提示.Net 3.5安装错误, 检查Windows系统更新提示无法检查到更新, 安装.Net 3.5提示"Windows无法完成请求的更改, 错误代码:0x800F081F"
症状: Windows检查系统更新时提示无法完成, 尝试安装.Net 3.5等组件时都无法完成, 错误代码: 0x800F081F 原因: 可能时设置了禁止Windows自动更新, 需要重新打开 解决 ...