前些天写的后台图片上传图片功能,今天写的时候就遇到问题了。特此把整个流程梳理记录一下,以便后期使用时方便查看。
1、models.py对应类中添加:
img = models.ImageField(upload_to='img', default='img/default.png')
(备注:如果后台添加上传图片,你的models.py中的类要写对应的admin,要注册)
2、执行数据库的操作命令:
python manage.py makemigrations
python manage.py migrate
3、在settings.py最后添加:
# 保存上传的图片目录
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/uploads/'
4、在settings.py的TEMPLATE->OPTIONS->context_processors 中添加:
'django.template.context_processors.media',
5、在urls.py中添加:
找到urlpatterns 在它的后面(备注:[ ]的后面)添加:
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
打个样:
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('', MyIndexView.as_view(), name="index"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
6、在html中显示:
<img src="{{ MEDIA_URL }}{{ object.img }}">
(备注:显示图片的html,要先接受通过views.py传过来的第一步中的类的实例)