家裝企業(yè)網(wǎng)站系統(tǒng)下載安卓優(yōu)化大師老版本
背景:
在flask-admin的模型視圖(modelview 及其子類)中如果不想重構UI視圖,那么就不可避免的出現(xiàn)默認視圖無法很好滿足需求的情況,如默認視圖中只有“新增”,“編輯”,“選中的”三個按鈕。
材料:
完整的flask-admin 開發(fā)環(huán)境
制作:
視圖源碼
1、在ModelView 子視圖中直接添加column_extra_row_actions 的擴展實現(xiàn)
column_extra_row_actions = [LinkRowAction('glyphicon glyphicon-off', '/admin/aiconfig/changestatus/{row_id}'),EndpointLinkRowAction('glyphicon glyphicon-test', 'aiconfig.index_view')]
2、按鈕圖標直接去bootstrop 中復制替換即可使用(組件 · Bootstrap v3 中文文檔 | Bootstrap 中文網(wǎng))?
?
3、?/admin/aiconfig/changestatus/{row_id} 對應的業(yè)務實現(xiàn)代碼
@expose('/changestatus/<string:ai_id>', methods=('GET', 'POST'))def updateStatus(self, ai_id):if ai_id:return_url = request.values.get('url') or self.get_url('.index_view')model = self.get_one(ai_id)if model is None:flash(gettext('Record does not exist.'), 'error')return redirect(return_url)form = self.edit_form(obj=model)model.updated_at = datetime.today()model.status = 1 if model.status == 0 else 0if self.update_model(form, model):flash(gettext('Record was successfully saved.'), 'success')# save buttonreturn redirect(self.get_save_return_url(model, is_created=False)) else:return redirect(return_url)
注:直接寫到當前視圖即可
效果?
經(jīng)驗與注意點?
1、column_extra_row_actions 擴展類的EndpointLinkRowAction 實現(xiàn)中必填項第一個為圖標,第二個為視圖權限,如下:
EndpointLinkRowAction('glyphicon glyphicon-test', 'aiconfig.index_view')
注:上面代碼片段中“aiconfig.index_view”中的aiconfig 為當前視圖注冊名,如果注冊時沒有定義,flask-admin 默認為modelview 的集成子類對應的模型名
admin.add_view(MyAiConfigView(db.session, name='Dify配置', category='Dify管理'))
由于本例子中注冊時沒有特別聲明Endpoint ,所以就會取 aiconfig,為該視圖對應的實體名,通過視圖中定義的下面代碼片段可以看到
def __init__(self, session, **kwargs):# You can pass name and other parameters if you want tosuper(MyAiConfigView, self).__init__(AiConfig, session, **kwargs)
2、第一點中提到的?aiconfig.index_view 其實可以省略為".index_view",如下代碼片段,照樣有效
column_extra_row_actions = [LinkRowAction('glyphicon glyphicon-off', '/admin/aiconfig/changestatus/{row_id}'),EndpointLinkRowAction('glyphicon glyphicon-test', '.index_view')]
3、column_extra_row_actions 可以通過LinkRowAction 及其子類實現(xiàn)新擴展按鈕的url連接。