【django开发】 django-admin二次开发

目录

1. 在admin界面添加预览图

2.FileField 或 ImageField 字段上传中文文件名的文件

3.对 FileField 或 ImageField 上传的文件类型进行筛选(必须上传文件)

4.对 FileField上传的非空文件进行类型筛选(允许不上传文件或上传指定格式)

5.删除记录时自动删除上传的文件

6.使用simpleui美化后台


 


1. 在admin界面添加预览图

在模型界面( model.py )实例化一个类并继承django.db.models.Model

定义图片字段 img = models.ImageField('图片', upload_to="存储路径")

导入模块

#model.py
from django.utils.html import format_html      #引入模块

def file_link(self):                           #函数名请随意 
    return format_html('<img src="{}" width="100px" />', 
                        self.img.url)

file_link.short_description= '预览图'          #函数名.short_description

 

#admin.py
list_displa = ['file_link']

exclude = ('file_link', )   #在增删数据时不显示(元组,必须加逗号)

2.FileField 或 ImageField 字段上传中文文件名的文件

上传文件的url 为/media/xxxx.txt       

open文件时需要的路径为 media/xxxx.txt

所以需要对url进行[1::]切片

但是python字符串默认并非是unicode,如果在字符创中使用Unicode字符,如中文字符,必须要经过转换

#model.py
from django.utils.deconstruct import deconstructible 

@deconstructible
class re_name(object):      #继承object (新式类)
    def __init__(self, path):        
        self.path = os.path.join(path, "%s")   
    def __call__(self, instance, filename):     # __call__ 把当前实例变成可调用的对象
        import pypinyin                         #把中文转成拼音的包
        def pinyin(word):
            s = ''                              
            for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):                                                 
            #style=pypinyin.NORMAL 普通模式,不带音节
                s += s.join(i)            
            return s
        return self.path % (pinyin(filename))

3.对 FileField 或 ImageField 上传的文件类型进行筛选(必须上传文件)

#model.py
字段名 = models.FileField
        (
        '歌词', 
        upload_to=re_name('songLyric/'), 
        default='暂无歌词',                                             #默认值
        blank=True,                                                    #允许为空   
        validators = [                                                 #自定义验证规则
                      validators.FileExtensionValidator(['txt','pdf'], message='歌词文件目前仅支持.txt与.pdf')
                    ])                        
#若文件后缀 not in ['txt','pdf'] 返回message中的的错误信息到前端

4.对 FileField上传的非空文件进行类型筛选(允许不上传文件或上传指定格式)

#model.py
def fiel_content(value):                  
    if value!="defaults" and value.name.split(".")[1] != "txt": 
            #如果value不为默认值(说明有数据上传)且上传的文件后缀不为.txt
            raise ValidationError("歌词文件只允许.txt文件")  #括号中为错误提示信息
                
#model.py
字段名 = models.FileField('测试', 
                          upload_to=re_name('songLyric/'), 
                          default='defaults',          #不上传时的默认值
                          blank=True,                 #允许不上传
                          validators =[file_content]  #file_content为上文的函数名
                        )

5.删除记录时自动删除上传的文件

使用FileField或ImageField时会向服务端上传文件,但当用户删除此条记录时,只能删除数据库中对文件路径的记录,无法删除源文件,故需要其他增加一些限制。(一定要写在定义class后)

#model.py
@receiver(pre_delete, sender=需要操作的model中的类名)
def mymodel_delete(sender, instance, **kwargs):
  instance.file.delete(False)

6.使用simpleui美化后台

首先pip install simpleui

然后在settings.py的 INSTALLED_APPS 首行添加‘simpleui’

随后在git中找到simpleui的源码,将其中的simpleui目录下的templatetags文件夹全部拷贝到:

项目文件夹/venv(虚拟环境)/Lib/site-packages/simpleui/文件夹中

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以回答这个问题。django-vue-admin 是一个基于 Django 和 Vue.js 的全栈开发框架,可以快速搭建后台管理系统。它提供了丰富的组件和插件,可以帮助开发者快速构建出美观、易用的管理界面。 ### 回答2: django-vue-admin是一个基于Django和Vue.js开发的开源管理系统框架,旨在帮助开发者快速构建和定制现代化的管理系统。它采用前后端分离的架构,后端使用Django提供API接口,前端使用Vue.js进行展示和交互。 使用django-vue-admin,开发者可以快速搭建一个具备基本功能的管理系统。框架提供了一套完整的通用模型和视图,开发者只需根据自己的需求进行配置和扩展即可实现快速开发。同时,它采用了模块化和组件化的设计,开发者可以方便地替换和定制界面的各个组件,实现个性化的界面展示。 django-vue-admin还提供了丰富的功能模块,如用户管理、权限管理、角色管理、菜单管理等,开发者可以根据项目需要进行选择和集成。框架还支持多语言和多主题的配置,方便开发者根据不同用户需求进行界面定制。 此外,django-vue-admin还面向中小型项目进行了性能优化,采用了异步加载、缓存和CDN加速等技术,提高了系统的响应速度和用户体验。 总的来说,django-vue-admin是一个强大而灵活的管理系统开发框架,它简化了开发者的开发流程,提高了开发效率。无论是快速搭建简单的管理系统,还是进行个性化的定制开发,都可以选择django-vue-admin作为开发工具。 ### 回答3: django-vue-admin 是一个用于快速开发后台管理系统的开源项目。它的主要特点是结合了 Django 和 Vue.js 框架的优势,使开发者能够高效地创建功能完善、界面友好的管理系统。 django-vue-admin 提供了一套基础的后台管理功能,包括用户管理、角色管理、权限管理、日志管理等。开发者可以根据自己的需求进行功能定制和扩展。 django-vue-admin 的前端使用了 Vue.js 框架,通过组件化的方式构建用户界面,并且使用了 Element-UI 组件库来提供丰富的UI组件。这使得开发者能够快速搭建出现代化、响应式的管理系统界面。后端则使用了 Django 框架,提供了强大的数据处理和权限控制能力。 在开发上,django-vue-admin 使用了前后端分离的架构,前端和后端通过 API 进行通信。这使得开发者可以独立地进行前后端开发,提高了开发效率和团队协作能力。同时,由于前后端分离的优势,django-vue-admin 的性能也得到了明显的提升。 总之,django-vue-admin 是一个功能强大、易用、高效的后台管理系统开发框架。它能够帮助开发者快速开发出现代化的后台管理系统,并且具备良好的扩展能力。无论是个人开发者还是企业开发团队,都可以利用 django-vue-admin 来构建稳定、高效的管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值