首页 > 其他 > 详细

stark - 4 ? 视图函数

时间:2019-04-14 23:56:50      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:instance   基本功   推出   change   rbo   内容   del   技术分享   获取   

?  list_view

1.处理表格(默认是显示表结构的所有字段)

 1 list_display = self.get_list_display()
 2 # 4.1处理表头
 3 header_list = []
 4 if list_display:
 5     for multi_key in list_display:
 6         if isinstance(multi_key,FunctionType):  #判断 传入值是否为函数
 7             verbose_name = multi_key(self,obj=None,is_header=True)
 8         else:
 9             verbose_name = self.model_class._meta.get_field(multi_key).verbose_name
10         header_list.append(verbose_name)
11 else:
12     header_list.append(self.model_class._meta.model_name)
13 
14 # 4.2处理表的内容
15 data_list = queryset[pager.start:pager.end]
16 
17 body_list = []
18 for row in data_list:  #row 是UserInfo object (1)
19     row_list = []
20 
21     if list_display:
22         for multi_key in list_display:
23             if isinstance(multi_key,FunctionType):
24                 row_list.append(multi_key(self,row,is_header=False,*args,**kwargs))
25             else:
26                 row_list.append(getattr(row,multi_key))  #获取UserInfo object (1)的属性
27     else:
28         row_list.append(row)
29 
30     body_list.append(row_list)

 

为了能够扩展以后业务的功能(推出新的业务,高级用户可能要显示多的列或者新的功能),我们可以针对某张表进行自定义修改定制。只需在自己的Handler子类重写此方法

这是StarkHandler类的方法
1
list_display = [] 2 def get_list_display(self): 3 """ 4 获取页面上应该显示的列,预留自定义扩展 5 :return: 6 """ 7 field_list = [] 8 field_list.extend(self.list_display) 9 return field_list

 

 

在上面方法的架构基础下,实现以往对表〔编辑〕〔删除〕的基本功能

如图           技术分享图片

 1 def display_edit(self,obj=None,is_header=None):
 2     """
 3     生成<编辑>a标签
 4     :param obj:
 5     :param is_header:
 6     :return:
 7     """
 8     if is_header:
 9         return "编辑操作"
10     change_url = self.reverse_change_url(pk=obj.pk)
11     return mark_safe(<a href="%s">编辑</a>%change_url)
12 
13 def display_delete(self,obj=None,is_header=None):
14     """
15     生成<删除>a标签
16     :param obj:
17     :param is_header:
18     :return:
19     """
20     if is_header:
21         return "删除操作"
22     delete_url = self.reverse_delete_url(pk=obj.pk)
23     return mark_safe(<a href="%s">删除</a>% delete_url)

 

 

示例:

技术分享图片
 1 #models.py下的Major类:
 2 #class Major(models.Model):
 3 #    title = models.CharField(verbose_name=‘专业‘,max_length=32)
 4 #
 5 #    def __str__(self):
 6 #        return self.title
 7 
 8 #该model类view函数下,继承StarkHanler,list_display[字段+方法]:
 9 from stark.service.v1 import StarkHandler
10 
11 class MajorHandler(StarkHandler):
12     list_display = [title,StarkHandler.display_edit,StarkHandler.display_delete]
View Code

 

stark - 4 ? 视图函数

标签:instance   基本功   推出   change   rbo   内容   del   技术分享   获取   

原文:https://www.cnblogs.com/steven2020/p/10708283.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号