在11.4.2這章中,有提到在服務(wù)器上處理富文本,在模型中定義了函數(shù)將Markdown格式轉(zhuǎn)換為HTML格式:class Post(db.Model):
__tablename__='posts'
id=db.Column(db.Integer,primary_key=True)
body=db.Column(db.Text)
timestamp=db.Column(db.DateTime,index=True,default=datetime.utcnow)
author_id = db.Column(db.Integer,db.ForeignKey('users.id'))
body_html = db.Column(db.Text)
@staticmethod
def on_changed_body(target,value,oldvalue,initiator):
allowed_tags = ['a','abbr','acronym','b','blockquote','code','em','i','li','ol','pre','strong','ul','h1','h2','h3','p']
target.body_html=bleach.linkify(bleach.clean(markdown(value,output_format='html'),tags=allowed_tags,strip=True))
db.event.listen(Post.body,'set',Post.on_changed_body)文章中說將on_changed_body函數(shù)注冊在body字段上,當類實例的body字段設(shè)置了新值后就會自動調(diào)用類實例的on_changed_body方法。不是很明白:在定義的時候,on_changed_body方法不是設(shè)置了四個參數(shù)么?def on_changed_body(target,value,oldvalue,initiator)。沒有傳入這四個參數(shù)也能調(diào)用嗎?而且這四個參數(shù)中的value,oldvalue,initiator是什么作用?
1 回答

慕容3067478
TA貢獻1773條經(jīng)驗 獲得超3個贊
你用的flask的什么extension? 這四個參數(shù)你不用關(guān)心怎么傳入,你只需要理解這幾個參數(shù)什么意思,然后重寫on_changed_body這個方法。
添加回答
舉報
0/150
提交
取消