系统后台文件上传(使用Admin后台管理系统上传文件)
1.首先模型类中有相关文件上传的字段:
- 其中FileFiled和ImageField都可用于文件上传,但是处理图片的话ImageField会更好
- upload_to属性后面解释
class GoodsType(BaseModel):
'''商品类型模型类'''
name = models.CharField(max_length=20, verbose_name='种类名称')
logo = models.CharField(max_length=20, verbose_name='标识')
image = models.ImageField(upload_to='type', verbose_name='商品类型图片')
class Meta:
db_table = 'df_goods_type'
verbose_name = '商品种类'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
2.在应用的admin.py中注册模型类
from django.contrib import admin
from goods.models import GoodsType
# Register your models here.
admin.site.register(GoodsType)
3.修改项目的配置文件setting.py,增加以下两行代码:
# settings.py
# 配置 MEDIA_ROOT 作为你上传文件在服务器中的基本路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload') # 注意此处不要写成列表或元组的形式
# 配置 MEDIA_URL 作为公用 URL,指向上传文件的基本路径
MEDIA_URL = '/media/'
# 这里特意写成 upload 和 media,而不是统一写成 media 或 upload,是为了便于理解 MEDIA_ROOT 和 MEDIA_URL 的作用和区别
- 该部分代码转载于https://www.jianshu.com/p/91409ab30dc7
- 一般为了方便起见,都设置为media即可,上图的注释写出了两个配置的区别
4.创建超级用户,登录网站后台127.0.0.1:8000/admin,进行文件(图片)上传
python manager.py createsuperuser
5.上传后的图片保存目录
http://127.0.0.1:8000/media/name
# 其中media是在配置文件中指定的路径,如果上面设置的为upload,那么则为http://127.0.0.1:8000/media/upload,也就是上传的图片保存在了这个目录下面。
# name是第一步中upload_to指定的文件夹,可以自由定义,根据模型类中的定义,图片的存放地址是:http://127.0.0.1:8000/media/type/filename,filename是上传的文件名
# 如果上述的文件夹不存在,那么django会自动创建。
6.访问和显示
新建一个html页面,给定img标签,指定src即可。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img src="http://127.0.0.1:8000/media/type/adv02.jpg">
</body>
</html>