+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-03(1)

2019-05(1)

2019-06(1)

2019-07(7)

2019-08(118)

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

发布于2020-09-24 05:45     阅读(236)     评论(0)     点赞(3)     收藏(2)


0

1

2

3

4

5

6

7

目录

1. 在admin界面添加预览图

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

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

 


1. 在admin界面添加预览图

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

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

导入模块

from django.utils.html import format_html

定义函数

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

admin.py 中添加,(如果已经定义了 list_displa ,追加即可)

  1. list_displa = ['file_link']
  2. readonly_fields = ('file_link',) #元组类型, 必须要加","

返回model.py   修改列名

函数名.short_description= '预览图'

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

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

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

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

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

model.py 中添加
  1. from django.utils.deconstruct import deconstructible
  2. @deconstructible
  3. class re_name(object): #继承object (新式类)
  4. def __init__(self, path):
  5. self.path = os.path.join(path, "%s")
  6. def __call__(self, instance, filename): # __call__ 把当前实例变成可调用的对象
  7. import pypinyin #把中文转成拼音的包
  8. def pinyin(word):
  9. s = ''
  10. for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
  11. #style=pypinyin.NORMAL 普通模式,不带音节
  12. s += s.join(i)
  13. return s
  14. return self.path % (pinyin(filename))

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

  1. 字段名 = models.FileField('歌词', upload_to=re_name('songLyric/'),
  2.   default='暂无歌词', #默认值
  3. blank=True, #允许为空
  4. validators = [
  5. validators.FileExtensionValidator
  6. (['txt','pdf'], message='歌词文件目前仅支持.txt与.pdf')
  7. ]) #若文件后缀 not in ['txt','pdf'] 返回message中的的错误信息到前端

 

原文链接:https://blog.csdn.net/Swing0_0/article/details/108704832

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 博客

作者:不上班你养我呀

链接: https://www.pythonheidong.com/blog/article/541750/77535d1d2324ebd04de2/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)