Flask 入門基礎python
Flask是一個輕量級的後臺框架,用Flask做爲Web框架的公司有Netfix,Reddit等,國內豆瓣,果殼等。使用flask的公司列表。Flask 有主要的兩個依賴,一個是WSGI(web server gateway Interface)web服務器網關接口,工具集-Werkzeug。另外一個是Jinjia2模板引擎web
python3.4以上版本pip已經自動安裝好了sql
# 檢查pip是否已經安裝 $: pip --version # 安裝某個包,例如安裝flask $: pip install <包的名稱> $: pip install flask # 安裝pipenv(全局) $: pip install pipenv # 檢查pipenv是否安裝 $: pipenv --version
虛擬環境一般用virtulenv來建立,爲了更方便的關聯虛擬環境和依賴包數據庫
$: pipenv install
$: mkdir demo/helloflask $: cd demo/helloflask $: mkdir hello.py $: pip install flask $: vim hello.py # 代碼清單 from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "hello flask" if __name__ = '__main__': app.run() # 運行 $: python hello.py
from flask import Flask app = Flask(__name__)
# 這一系列都是由Flask完成,咱們只須要在函數上面添加一個裝飾器app.route(),並傳入url規則做爲參數。可讓函數與url創建一個鏈接,這個過程叫作註冊路由,函數稱爲視圖函數 @app.route('/') def hello(): return "hello flask"
if __name__ = '__main__': app.run()
在啓動的時候能夠添加參數,在run()中flask
@app.route('/index') @app.route('/hello') def index(): return 'hello, Flask!'
@app.route('/hello/<name>') def index(name): return 'hello %s' % name
@app.route('/hello' , defaults={'name':'param'}) @app.route('/hello/<name>') def index(name): return 'hello %s' % name
@app.route('/hello/<int:name_id>') def index(name): return 'hello %d' % name_id
@app.route('/hello',methods = ['GET','POST']) def index(): return 'hello flask'
from flask import Flask, redirect @app.route('/index') def index(): return redirect('http://www.example.com')
from flask import Flask, redirect, url_for @app.route('/index') def index(): return redirect(url_for('login')) @app.route('/') def login(): return "登入成功"
from flask import Flask, abort @app.route('/404') def not_found(): abort(404)
helloflask/ - static/ - templates/ - app.py
{% if %}..{% else %}..{% endif %} {% for i in message %}..{% endfor %}
{{ }}
{% include "index.html" %}
{% from 'bootstrap/form.html' import render_form %} {{ render_form(form) }}
{% extends 'base.html' %}
{% block content %}{% endblock %}
- templates/ index.html @app.route('/') def index(): return render_template('index.html')
{{ name|title }}
{{ movies|length }}
過濾器名 | 說明 |
---|---|
upper | 字母大寫 |
lower | 字母小寫 |
capitalize | 首字母大寫 |
truncate(6,True) | 當前字符長度超過6顯示...,默認是第二個參數是false |
default() | 默認字符串名 |
trim | 去除先後空格 |
safe | 關閉自動轉義 |
round | 四捨五入取整 |
abs | 絕對值 |
first | 取第一個元素 |
last | 取最後一個元素 |
sum | 求和 |
sort | 排序默認升序 |
join | 合併爲字符串 |
from flask import Flask, render_template, flash, redirect, url_for app = Flask(__name__) app.secret_key = 'secret' @app.route('/flash/') def flask(): flash("閃現") return redirect(url_for('hello_world'))
<div> {% for message in get_flashed_messages() %} <div class="alert">{{ message }}</div> {% endfor %} </div>
$:pip install flask-sqlalchemy 對app對象初始化 db = SQLAlchemy() db.init_app(app)
db = SQLAlchemy() class User(db.Model): __tablename__ == 'user' name = db.Column(db.String(100)) no = db.Column(db.Integer(20))
字段 | 說明 |
---|---|
String | 字符串 |
Integer | 整型 |
Text | 文本 |
Date | 日期對象 Datetime.date |
Time | 時間對象 Datetime.time |
DateTime | 時間日期 |
Interval | 時間間隔 |
Float | 浮點數 |
Boolean | 布爾值 |
參數名 | 說明 |
---|---|
primary_key | 若是爲True 該字段爲主鍵 |
unique | 若是爲True 該字段不容許重複 |
index | 若是爲True 該字段建立索引 |
nullable | 該字段能否爲空 |
default | 字段設置默認值 |
__tablename__ = ''
db.create_all()
db.drop_all()
# 調用add()方法將新建立的對象添加到數據庫會話中 db.session.add(user) # 提交會話 db.session.commit()
<模型類> .query. <過濾方法> . <查詢方法> bootstrap
https://docs.sqlalchemy.org/en/13/orm/query.html
查詢方法 | 說明
---|---
all() | 查詢包含全部的記錄列表
first() | 查詢第一條數據,若是沒有返回None
get(ident) | 傳入主鍵值爲參數,返回豬圈記錄
count() | 返回查詢的數量
first_or_404() | 查詢第一條記錄,未找到返回404錯誤
with_paernt() | 傳入模型做爲參數,返回和這個實例相關聯的對象
paginate() | 返回Pagination對象,對記錄進行分頁操做vim
https://docs.sqlalchemy.org/en/13/orm/query.htmlapi
過濾方法 | 說明 |
---|---|
filter() | 使用指定的規則過濾,返回新產生的對象 |
filter_by() | 使用指定的規則過濾(以關鍵字爲對象),返回新產生的對象 |
order_by | 排序 |
group_by() | 根據查詢的記錄進行分組 |
offset() | 偏移查詢結果 |
class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(70), unique=True) phone = db.Column(db.String(20)) class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), index=True) body = db.Column(db.Text)
class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), index=True) body = db.Column(db.Text) author_id = db.Column(db.Integer, db.ForeignKey('author.id'))
class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(70), unique=True) phone = db.Column(db.String(20)) articles = db.relationship('Article')
參數書籍:Flask開發實戰瀏覽器