轻量级框架:flask web.py tornado 开发灵活,开发效率低,真正的体现程序员的水平。
重量级框架:django,方便程序员开发,提供大量的功能组件(站点管理,csrf-token,富文本,缓存,日志,ORM)
flask版本:1.1.1
flask提供了什么:
- flask只能够完成最简单的请求响应
- jinjia2模板系统
- werkzeug 工具箱(wsgi)
- 插件
开始flask
1、创建虚拟环境
conda create -n FlaskPath python=3.5.2
启动虚拟环境
activate FlaskPath
2、安装flask
pip install flask == 1.1.1
3、使用flask
启动
python hello.py
默认在5000的端口
4、Flak()参数
import_name:
- flask程序所在的目录,所在的包位置,传__name__
- 决定了flask静态文件,模板文件的寻找地址
static_url_path
- 静态文件的访问地址,可以不穿,默认为 / +static_folder
template_folder
- 模板文件的存储位置,可以不穿,默认为templates
5、路由
flask中的路由跟django中的路由有区别
django中使用路由: urls.py path("//",视图)
flask路由 使用装饰器
@app.route("/index/")
def index():
写路由 需要注意:
- url应该以/ 开头
- url写法 标准的是 / /
3. 视图函数不能重名
4. 习惯:将视图函数的名字命名为 路由的名字
路由传参
转换器语法
<>叫转换器语法,默认为string类型
- 路由中使用了<user name>
- 视图中增加参数 username
类型:
string 默认类型
int 整型
float 浮点型
path:包含斜杠的路径,通常用于路径的拼接
http://timgsa.baidu.com/timg?src=http://xxxxx.nipic.com
http://timgsa.baidu.com/timg/http://xxxx.nipc.com
uuid:通用唯一识别码
请求
django:
request.method
request.GET.get()
request.POST.get()
flask get请求
默认支持get请求
获取get请求的参数
post请求
flask默认不支持post请求
解决:增加请求方式
获取post请求参数
request
- from flask import request
- 请求上下文
- args 获取get请求的参数
- form 获取post请求的参数
- cookies 获取cookie
- method 获取请求方式 POST GET
- url 获取请求url地址
- file 获取请求上传的文件
- headers 请求报文的头
静态文件
django 配置settings中增加 static目录位置
flask中使用静态文件
在flask启动文件的同目录创建static目录,可以通过修改Flaks参数修改static目录
模板
在脚本文件统计目录创建templates目录,可以通过修改flask参数改变模板文件的目录
flask使用的是jinjia2的模板系统
- 调用静态模板 : render_template("html")
- 传递数据
- 变量的传递
变量传递的第二种方法
第三种方法
模板语法
<h1>我是 index </h1>
<h2>变量的使用</h2>
{{ name }}
{{age}}
<hr>
<h2> </h2>
{{name.upper()}}
{{name.replace("e","xxxx")}}
<hr>
{{name.1}}
{{name + "好水"}}
{{name.split("l")}}
<h2>jinja2循环</h2>
{% for one in name %}
{{one}}<br>
{% endfor%}
<h2>jinja2判断</h2>
{% if name == "hello"%}
{{name}}
{% else %}
<span>没有名字</span>
{% endif %}
{{ mydict.get("yuwen") }}
{% for key,value in mydict.items() %}
{{key}}:{{value}}
{% endfor %}
模板继承
base.html
{% block title %} {%endblock%}
子页面
{% extends "base.html"%}
{% block title %} 子页面{%endblock%}
base页面 提取公共部分 ,修改静态文件位置,增加block