基于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())

 

效果图:

 

posted @ 2017-07-31 11:28  Vincen_shen  阅读(265)  评论(0)    收藏  举报