其他分享
首页 > 其他分享> > day21 stark组件开发之为页面提供自定义显示列函数

day21 stark组件开发之为页面提供自定义显示列函数

作者:互联网

自定义显示列函数

在列表中新增自定义列,比如“编辑”和“删除”按钮

1、首先基类模块导入函数

from django.urls import reverse
from django.utils.safestring import mark_safe
from types import FunctionType

2、在基类中新增自定义函数

   def display_edit(self, obj=None, is_header=None):
        """
        自定义页面显示的列(表头和内容)
        :param obj:
        :param is_header:
        :return:
        """
        if is_header:
            return "编辑"
        name = "%s:%s" % (self.site.namespace, self.get_change_url_name,)
        return mark_safe('<a href="%s">编辑</a>' % reverse(name, args=(obj.pk,)))

    def display_del(self, obj=None, is_header=None):
        if is_header:
            return "删除"
        name = "%s:%s" % (self.site.namespace, self.get_delete_url_name,)
        return mark_safe('<a href="%s">删除</a>' % reverse(name, args=(obj.pk,)))

3、stark组件中调用方式

    list_display = ['id', 'title', StarkHandler.display_edit, StarkHandler.display_del]

扩展:点击编辑或删除按钮时需要有跳转链接,再此优化自定义链接

1、基类模块中自启动函数需要新增字段

2、新增自定义链接函数

   def get_url_name(self, param):
        app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_name
        if self.prev:
            return '%s_%s_%s_%s' % (app_label, model_name, self.prev, param,)
        return '%s_%s_%s' % (app_label, model_name, param,)

    @property
    def get_list_url_name(self):
        """
        获取列表页面URL的name
        :return:
        """
        return self.get_url_name('list')

    @property
    def get_add_url_name(self):
        """
        获取添加页面URL的name
        :return:
        """
        return self.get_url_name('add')

    @property
    def get_change_url_name(self):
        """
        获取修改页面URL的name
        :return:
        """
        return self.get_url_name('change')

    @property
    def get_delete_url_name(self):
        """
        获取删除页面URL的name
        :return:
        """
        return self.get_url_name('delete')

3、StarkSite函数中有部分调用需要加self

效果

标签:return,name,自定义,get,url,self,day21,stark
来源: https://www.cnblogs.com/simon1993/p/15915180.html