继昨天留下的问题

思路:

结果:

优化:

from stark.service.site import site,ModelSatrk

from .models import *
from django.utils.safestring import mark_safe
from django.urls import reverse
#
class BookConfig(ModelSatrk): def edit(self,obj=None,is_header=False):
if is_header:
return "操作"
edit_url=reverse("%s_%s_change"%self.app_model_name,args=(obj.pk,))
return mark_safe("<a href='%s'>编辑</a>"%edit_url) # return 的url需要反向解析,需要取到name的值 def delete(self,obj=None,is_header=False):
if is_header:
return "操作"
# 如何反向解析url
delete_url = reverse("%s_%s_change" % self.app_model_name, args=(obj.pk,))
return mark_safe("<a href='%s'>删除</a>"%delete_url) list_display = ["id","title","price",edit,delete] # z这个list_display只针对Book表
# 自制注册功能(admin表的注册
site.register(Book,BookConfig)

stark.py

在site模板提前取值

from django.conf.urls import url
from django.shortcuts import HttpResponse,render class ModelSatrk(object): # 针对某张表的样式
list_display=[] # 提供给用户自己定制显示字段
def __init__(self,model,site):
# http://127.0.0.1:8000/stark/app01/book/
self.model=model # 获取是当前哪张表对应的样式类对象(用户访问当前类
self.site=site # 拿到一个全局的单例对象
self.app_model_name=(self.model._meta.app_label,self.model._meta.model_name)

------------------------

这样第一种情况结束(用户自定义样式类)
 
第二中:当用户没有定义样式类(我们需要提供一个默认样式类)

会以__str__来当默认值
admin是以这样的形式展示默认样式的:

 header_list.append(self.model._meta.model_name.upper())

所以,接下来添加复选框

----

当默认样式一定要有["id","title","price",] 这3个字段,怎么操作

这3部分不需要用户去定制

定义一个新的空列表

    def get_list_display(self):
new_list_display=[] # [checkbox,"__str__",edit,delete] 将list_display里的str添加过去
new_list_display.extend(self.list_display) # self.list_display是一个列表,将一个列表添加进一个列表
new_list_display.append(ModelSatrk.edit)
new_list_display.append(ModelSatrk.delete)
new_list_display.insert(0,ModelSatrk.checkbox) # insert,第一个放位置
return new_list_display # [checkbox,"__str__",edit,delete]

展示数据信息和表头信息都用这个

stack组件03的更多相关文章

  1. Flutter——Stack组件(层叠组件)、Align组件、Positioned组件

    Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局. Stack组件 常用于两个子元素. Stack ...

  2. stark组件03

    优化代码 1:页面的增删改查url反转的封装到类里:ModelSatrk # 编辑页面的url def get_edit_url(self,obj): edit_url = reverse(" ...

  3. Flutter 页面布局 Stack层叠组件

    Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局 属性 说明 alignment 配置所有子元素的 ...

  4. 11Flutter页面布局 Stack层叠组件 Stack与Align Stack与Positioned实现定位布局

    /* Flutter 页面布局 Stack层叠组件: Stack与Align Stack与Positioned实现定位布局: Flutter Stack组件: Stack表示堆得意思,我们可以用Sta ...

  5. 定位布局 Stack 层叠组件 Stack 与 Align Stack 与 Positioned 实现

    一.Flutter Stack 组件 Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局 align ...

  6. 一篇带你看懂Flutter叠加组件Stack

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Stack Stack组件可以将子组件叠加显示,根据子组件 ...

  7. 2690036 - SAP HANA 2.0 SPS 03 Database Revision 034

    Symptom This is the SAP Release Note for SAP HANA 2.0 Database Revision 034 (2.00.034.00) of the SAP ...

  8. Flutter学习笔记(23)--多个子元素的布局Widget(Rwo、Column、Stack、IndexedStack、Table、Wrap)

    如需转载,请注明出处:Flutter学习笔记(23)--多个子元素的布局Widget(Rwo.Column.Stack.IndexedStack.Table.Wrap) 上一篇梳理了拥有单个子元素布局 ...

  9. 【Flutter实战】六大布局组件及半圆菜单案例

    老孟导读:Flutter中布局组件有水平 / 垂直布局组件( Row 和 Column ).叠加布局组件( Stack 和 IndexedStack ).流式布局组件( Wrap )和 自定义布局组件 ...

随机推荐

  1. OGNL与ValueStack(VS)-N语法top语法(转)

    N语法[0]:<s:property value="[0]"/><br> N语法[1]:<s:property value="[1]&quo ...

  2. linux 卸载jdk和安装

    卸载JDK 1.先输入java -version 查看是否安装了jdk 2.如果安装了,检查下安装的路径 which java(查看JDK的安装路径) 3.卸载 rm -rf JDK地址(卸载JDK) ...

  3. 使用size_t注意边界

    C++中的 size_t 表示数组的下标,一般为: typedef unsigned size_t; 在学习中我们一般使用int表示下标,这样在循环中可以判断边界x>=0 或x<=0,比如 ...

  4. response.getWriter().write("中文");乱码问题

    起初遇到这个问题,网上几乎所有的建议都是: response.setHeader("Content-type", "text/html;charset=UTF-8&quo ...

  5. 缓存技术内部交流_02_Ehcache3 XML 配置

    参考资料: http://www.ehcache.org/documentation/3.2/getting-started.html#configuring-with-xml http://www. ...

  6. 新东方雅思词汇---10.1、(a)esthet

    新东方雅思词汇---10.1.(a)esthet 一.总结 一句话总结: 感觉 aesthetic 英 [i:sˈθetɪk]  美 [esˈθetɪk; ɛsˈθɛtɪk]  adj. 美的:美学的 ...

  7. 使用IDEA创建SpringBoot自定义注解

    创建SpringBoot项目 添加组织名 选择web 输入项目名称 创建后目录结构为 使用Spring的AOP先加入Maven依赖 <dependency> <groupId> ...

  8. 转:在Eclipse的Debug页签中设置虚拟机参数

    http://blog.csdn.net/decorator2015/article/details/50914479 在Eclipse的Debug页签中设置虚拟机参数 步骤 1,Run->De ...

  9. [nodejs]国内npm安装nodejs modules失败的几个解决方案

    使用npm安装node模块时经常有卡住安装失败的情况,如图所示.原因在于npm服务器在美国,还有就是某强大的防火墙作用.这样的问题导致很多新手放弃使用node,几乎每天都有新手再问这个问题.现在分享一 ...

  10. mvc框架详解

    mvc全称:Model View Controller,分别为Model(模型),View(视图),Controller(控制器). 这张图就很好的解释了MVC框架的基本工作原理,Modal通常为后台 ...