基于Django实现 - 通用增删改查框架(TenkAdmin)
第一步:
在自己的html页面中includ TenkAdmin中对应的HTML页面
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"> <h1 class="page-header">Dashboard</h1> {% include "alexadmin/model_table_list.html" %} </div>
第二步:
在View中调用TenkAdmin中对应的View类
class Customer(View): app_name = "SCMC" model_name = "customer" model_data = ModelData() def get(self, request): """ 处理数据展示请求 no_render选项让Model_data不直接渲染,而是返回所有局部变量 """ view_data_get = self.model_data.get(request, self.app_name, self.model_name, no_render=True) return render(request, "customer_list.html", view_data_get) def post(self, request): """处理导出CSV请求""" return self.model_data.post(request, self.app_name, self.model_name)
第三步:
在TenkAdmin中的代码示例
class ModelData(View): """生成Model列表页面""" def get(self, request, app_name, model_name, no_render=False): """ 1. take model obj, get the model data, 2. take model's admin class. the admin class include the model_obj, lister_display, list_filter, search_fields, list_per_page """ if app_name in site.registered_admins: if model_name in site.registered_admins[app_name]: admin_class = site.registered_admins[app_name][model_name] queryset, paginator, filter_conditions, condition_str, search_str, order_key, new_order_key = self.get_filter_obj(request, admin_class) if no_render is True: # 如果是被其他APP调用,则返回变量,而不进行template渲染 return locals() return render(request, "TenkAdmin/model_table_list.html", locals())
效果图: