zoukankan      html  css  js  c++  java
  • stack组件03

    继昨天留下的问题

    思路:

    结果:

    优化:

    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)
    View Code

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

    这样第一种情况结束(用户自定义样式类)
     
    第二中:当用户没有定义样式类(我们需要提供一个默认样式类)
    会以__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]

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

  • 相关阅读:
    环境是如何建立的 启动文件有什么
    环境中存储的是什么
    串行 并行 异步 同步
    TPC-H is a Decision Support Benchmark
    进程通信类型 管道是Linux支持的最初Unix IPC形式之一 命名管道 匿名管道
    删除环境变量
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
  • 原文地址:https://www.cnblogs.com/jassin-du/p/8570008.html
Copyright © 2011-2022 走看看