SimpleUI 定制 + DjangoAdmin

一. SimpleUI 使用

做完注册后台样式就会发生变化了

1. 下载

  pip install django-simpleui

2. 注册(setting.py)


  INSTALLED_APPS = [
      # 必须放在最前面
      'simpleui',
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      ...
  ]

3. 映射(admin.py)


# eg: admin.site.register(Book)
admin.site.register(表名)

二. 映射表中的字段

1. 简单映射

admin.py 中。

from .models import Book, Author, AuthorDetail

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(AuthorDetail)

3.gif

2. 定制映射

class book_Manager(admin.ModelAdmin):
    # 映射字段
    list_display = ['id', 'name', 'publish', 'author']

# 注册使用
admin.site.register(Book, book_Manager)
3.gif

3. 定制映射还回格式

写一个函数,将函数名在 list_display 中映射。

# 导入 format_html
from django.utils.html import format_html

class book_Manager(admin.ModelAdmin):
    # 映射字段 (可以是中文)
    list_display = ['id', 'name', 'publish', 'author', 'goodsImg']

    # 写一个函数,将函数名在 list_display 中映射。
    def goodsImg(self, obj):
        return format_html(
            # 可以还回 html 格式
            f"<a href='http://127.0.0.1:8000/goods/media/{obj.productImg}' target='_blank'><img style='width:50px;' src='http://127.0.0.1:8000/user/media/{obj.productImg}' /></a>")

    # 定义列名
    goodsImg.short_description = "商品图片"


# 注册使用
admin.site.register(Book, book_Manager)
3.gif

三. 样式定制

(1). 代码

修改 logo 必须是链接图片(浏览器可直接访问的图片)

如果是本地图片的话,需替换 /Lib/site-packages/simpleui/static/admin/simpleui-x/img 下的图片

# 修改 logo (setting.py 中)
SIMPLEUI_LOGO = 'http://127.0.0.1:7999/media/photo14.jpg'
# 修改名称 (任意app下的 admin.py 中)
admin.site.site_header = '企业级后台管理系统后台'  # 设置header
admin.site.site_title = '微雨停了管理后台2'  # 设置title
admin.site.index_title = '微雨停了管理后台3'

(2). 效果展示

3.gif
3.gif

2. 侧边栏(app名称 + 表名称)

(1). 代码

app 名称,绿色 2024-04-22 08:56:58 星期一框部分。(app.py 中)

from django.apps import AppConfig

class BookConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'book'
    # 修改 app名称(主要代码)
    verbose_name = "图书-app"

表名称,,红色 框部分。 ( models.py 中)


""" 其他表名同理 """

# models.py 中
class Book(models.Model):
    。。。

    class Meta:
        # 修改数据库表名,(不修改会是==> app名_表名)
        db_table = "drf_book"
        # 修改 表名称(主要代码)
        verbose_name = "书"
        verbose_name_plural = verbose_name

(2). 效果展示

image

3.修改下拉框外键字段展示

(1). 代码

# 方式一 admin.py 中

class OpenC(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        # 自定义外键字段名
        # return str(obj.id) + '-' + obj.name
        return str(obj.id) + '自定义名'

class book_Manager(admin.ModelAdmin):
    list_display = ['id', 'name', 'publish', 'author']

    # 重写 formfield_for_foreignkey 方法
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'author':
            res = OpenC(queryset=Author.objects.all())
            return res
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

# 注册
admin.site.register(Book, book_Manager)


# 方式二 models.py 中

class User(models.Model):
    username = models.CharField(max_length=100, verbose_name='用户名')

    # 使用 __str__
    def __str__(self):
        return self.username

(2). 效果展示

图一:
图二:

四. 配置参数

参考链接:https://daoxuan.cc/posts/53297/

# 注册小区表
class TbCommunityAdmin(admin.ModelAdmin):
    # 新增和修改页面需要展示的字段
    fields = ('code','name', 'area', 'address', 'total_buildings','total_households','greening_rate','thumbnail','developer','estate_company','status','create_time','update_time')

    # listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)
    list_display = ['code', 'name', 'address','area', 'total_buildings', 'total_households', 'greening_rate', 'image_data','state_data','create_time']

    # 搜索
    search_fields = ['name']

    # 只读字段
    readonly_fields = ('code', 'create_time', 'update_time')

    # list_per_page设置每页显示多少条记录,默认是100条
    list_per_page = 5

    # ordering设置默认排序字段,负号表示降序排序
    ordering = ('-create_time',)

    # 设置哪些字段可以点击进入编辑界面
    list_display_links = ('code', 'name')
    # 详细时间分层筛选 
    date_hierarchy = 'create_time'


    # list_editable 设置默认可编辑字段,这个字段必须要在list_display里面配置才可以使用
    # 并且必须表里面有对应字段,不能是自己定义的列表字段
    # list_editable = ['']


    # fk_fields 设置显示外键字段,如果这个表里面有外键,并且想要在列表展示,就可以使用这个配置
    # fk_fields = ('',)
posted @ 2024-04-20 23:48  codegjj  阅读(6)  评论(0编辑  收藏  举报