在开始之前我们要确认环境中已经安装了Pillow,如果没有安装,可以通过命令pip install Pillow来安装,这个是python的图像处理库。
第一步:数据库设置
首先在项目中创建一个app。例如 python manage.py startapp app1
然后将其加入到settings.py文件中。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
]
然后再数据库中建立保存图片的表。
class IMG(models.Model):
img = models.ImageField(upload_to='img')
name = models.CharField(max_length=20)
这里的upload_to是指定图片存储的文件夹名称,上传文件之后会自动创建
(ps:如何不想用Django自带的数据库,可以在settings.py
文件中修改位自己用的数据库。)
执行命令做数据迁移,在执行迁移文件在数据库中创建表。
python manage.py makemigrations
python manage.py migrate
第二部:修改settings.py文件
只需要在最后的静态文件区加上下面两行代码:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') #设置静态文件路径为主目录下的media文件夹
MEDIA_URL = '/media/' #url映射
第三部:创建模板
在templates文件下创建一个文件(最好是我们的app的名字,以此来把页面按app分开),比如叫app1,然后在app1文件下创建我们的前端页面。
uploading.html页面:
Title
showing.html页面:
Title
{% for img in imgs %}
{% endfor %}
第四部:创建视图函数
views.py文件:
from django.shortcuts import render
from app1.models import IMG
def uploadImg(request):
"""
图片上传
:param request:
:return:
"""
if request.method == 'POST':
new_img = IMG(
img=request.FILES.get('img'),
name = request.FILES.get('img').name
)
new_img.save()
return render(request, 'app1/uploading.html')
def showImg(request):
"""
图片显示
:param request:
:return:
"""
imgs = IMG.objects.all()
content = {
'imgs':imgs,
}
for i in imgs:
print (i.img.url)
return render(request,'app1/showing.html',content)
第五步:urls.py的配置:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from app1 import views
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^upload', views.uploadImg),
url(r'^show', views.showImg),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 这句话是用来指定和映射静态文件的路径
然后我们就可以实现图片的上传和显示了。