輕量級框架: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