Flask基礎知識

2021-08-10 00:08:45 字數 4600 閱讀 7145

flask渲染jinja2模板和傳參

渲染模板的方法:render_template()

from flask import render_template

defhello

(name=none):

return render_template('hello.html', name=name)

模板例項:

hello from flasktitle>

hello

}!h1>

hello world!h1>

如何渲染模板

* 模板放在『templates』資料夾下

* 從『flask』中匯入『render_template』函式

* 在檢視函式中,使用『render_template』

函式,渲染函式,注意,只需要填寫模板的名字,不需要填寫『templates』這個資料夾的路徑。

模板傳參:

* 如果只有乙個 或者少量引數,那麼直接在『render_template』函式中新增關鍵字引數就可以了。

* 如果有多個引數,可以把多個引數放在字典中,引數間以逗號隔開,再在『render_template』中,新增「**contex」,context是字典名稱

在模板中,如果要使用乙個變數,語法是『}』

在訪問模型中的屬性或字典,可以通過『}』的形式,或者是使用『}』

if判斷

1.語法:

for 迴圈遍歷列表和字典

1.字典的遍歷,語法和『python』一樣,可以使用『items()』,『keys()』,』itemvalues()』

}:}p>

2.列表的遍歷:語法和『python』一樣

}p>

過濾器

1. 介紹和語法:

繼承和block

1.繼承的作用和語法:

*作用:可以把一些公共的**放在父模板中,避免每個模板編寫同樣的**。

*語法:

2.block實現:

*作用:可以讓子模板實現一些自己的需求。父模板需要提前定義好。

*注意點:子模板中的**,必須放在block塊中。

flask-sqlalchemy的使用:

1.初始化和設定資料庫配置資訊:

* 使用flask_sqlalchemy中的sqlalchemy進行初始化:

from flask_sqlalchemy import sqlalchemy

import config

2.設定配置資訊:在『config.py』檔案中新增亦喜愛的配置資訊:

# dialect+driver://username:password@host:port/database

dialect = 'mysql'

driver = 'mysqldb'

username = 'root'

password = '229894'

host = '127.0.0.1'

port = '3306'

database = 'db_demo2'

sqlalchemy_database_uri = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(dialect,driver,

username,password,host,port,database)

sqlalchemy_track_modifications = false

.from_object(config)

做測試:

db.create_all()
使用flask-sqlalchem建立模型與表的對映:

1.模型需繼承『db.model』,然後需要對映到表中的屬性,必須寫成『db.column』的資料型別。

2. 資料型別:

* 『db.integer』代表的是整形;

* 『db.string』代表的士『varchar』,需要指定最長的長度;

* 『db.text』代表的士『text』

3.其他引數:

*『primary_key』:代表的是將這個字段設定為主鍵;

* 『autoincrement』:代表的士這個主鍵為自增長的;

* 『nullable』:代表的士這個字段是否為空,預設 可以為空;若設定為false,則不可為空。

4.最後需呼叫『db.create_all』來將模型真正的對映到資料庫中。

flask-sqlalchemy資料的增,刪,該,查:

1.增:

#增加:

article1 = article(title='aaa',content='bbb')

db.session.add(article1)

#事務db.session.commit()

2.查:

# 查

# select * form article where title = 'aaa';

article1 = article.query.filter(article.title == 'aaa').first()

print

'title:%s' % article1.title

print

'content:%s' % article1.content

3.改:

# 改:

# 1.先把要更改的資料查詢出來

article1 = article.query.filter(article.title == 'aaa').first()

# 2.把這條資料,你需要修改的地方進行修改

article1.title = 'symon'

# 3.做事務的提交

db.session.commit()

4.刪:

# 刪:

# 1.把需要刪除的資料查詢出來

article1 = article.query.filter(article.content == 'bbb').first()

# 2.把這條資料刪除掉

db.session.delete(article1)

# 3.做事務提交

db.session.commit()

分開『models』以及解決迴圈引用

1. 分開models的目的:為了讓**更加方便的管理。

2. 如何解決迴圈引用:把『db』放在乙個單獨的檔案中,切斷迴圈引用的線條就可以了。

flask-migrate的介紹與安裝:

1. 介紹:因為採用『db_create_all』在後期修改欄位的時候,不會自動的對映到資料庫中,必須先刪除表在重新執行『db.create_all』,這樣不符合需求。因此flask_migrate就是為了解決這個問題。

2. 安裝flask_migrate

3. 使用flask-migrate必須借助『flask_scripts』這個包的『migratecommand』中包含了所有和資料庫相關的命令。

4. 『flask_migrate』相關的命令:

* 『python manage.py db init』:初始化乙個遷移指令碼的環境,只需要執行一次。

* 『python manage.py db migrate』:將模型更改了,就需要執行一遍這個命令。

* 『python manage.py db upgrade』:將遷移檔案真正對映到資料庫中。每次執行了『migrate』命令後,就記得要執行這個命令。

5. 注意點:需要將你想要對映到資料庫的中模型,都要匯入到『manage.py』檔案中,如果沒有匯入進去,就不會對映導資料庫中。

6. 『manager.py』的相關**:

from flask_script import manager

from flask_migrate import migrate,migratecommand

from exts import db

from models import article

# init

# migrate

# upgrate

#模型 —> 遷移檔案 ——> 表

#2.把migratecommand命令新增到manager中

manager.add_command('db',migratecommand)

if __name__ == '__main__':

manager.run()

FLASK基礎知識

from flask import flask 初始化乙個flask物件 傳遞乙個引數 name 1.方便flask框架去尋找資源 2.方便flask外掛程式比如flask sqlalchemy出現錯誤的時候,好去尋找問題所在位置 defhello world return hello world ...

flask 基礎知識

cbv樣式 ps 在cbv裡不能用裝飾器呼叫,只能用add url rule方法呼叫 class indexviews views.methodview method post 方法固定只能用post方法,decoretors auth,給所有這個類裡的方法,加上auth裝飾器,列表裡可以加多個 d...

flask基礎知識

頁面跳轉和重定向 1 用處 在使用者訪問一些需要登入的頁面的時候,如果使用者沒有登入,那麼可以讓它重定向到登入頁面 2 實現 from flask import redirect,url redirect url for login flask渲染jinjia2模板和傳參 1 如何渲染模板 函式,渲...