Django图片上传到Admin
一、Admin中上传并显示图片
1. 上传图片相关代码
- 安装包
pip install Pillow
- models.py代码
ModuleImageUrl = models.ImageField(upload_to='images/',max_length=250,null=False,blank=False,verbose_name='模块图片地址')
- admin.py代码
from django.contrib import admin
from django.utils.html import format_html
from .models import IndexPage
@admin.register(IndexPage)
class UserAccountAdmin(admin.ModelAdmin):
list_display = ('ModuleName','ModuleImageUrl_Img','IsUse')
def ModuleImageUrl_Img(self,obj):
if obj.ModuleImageUrl:
return format_html('<img src="{}" style="width:100px;height:80px;"/>'.format(obj.ModuleImageUrl.url))
return ""
ModuleImageUrl_Img.short_description = '图片'
- settings.py代码
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
- urls.py代码
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、优化
1. 修改图片名
- models.py代码
def upload_image(obj,filename):
timeStr = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
filename = os.path.join('images', '{}-{}'.format(timeStr,filename))
return filename
ModuleImageUrl = models.ImageField(upload_to=upload_image,max_length=250,null=False,blank=False,verbose_name='模块图片地址')
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2. 删除同步
还不会。。。
三、上传到阿里云OSS
1. 安装包
pip install django-oss-storage
2. 修改代码
- setting.py
#固定
DEFAULT_FILE_STORAGE = 'django_oss_storage.backends.OssMediaStorage'
#阿里云oss
OSS_ACCESS_KEY_ID = 'LTAI5tEbp95AAAAbQffA7p1DfB'
#阿里云oss
OSS_ACCESS_KEY_SECRET = 'Hxs7yFjHfErgeBBBBBB1d0wwp03d5sG'
#阿里云oss bucket
OSS_BUCKET_NAME = 'playadmin'
#阿里云oss
OSS_ENDPOINT = 'oss-cn-beijing.aliyuncs.com'
- 阿里云oss地址
- 地址:https://oss.console.aliyun.com/bucket
- 注意事项
- 阿里云oss控制台=>对象存储/bucketname(自己创建的名字)/文件管理。这里的授权要改为完全控制,不然没法上传。