django实现图片上传和图片显示

 

在开始之前我们要确认环境中已经安装了Pillow,如果没有安装,可以通过命令pip install Pillow来安装,这个是python的图像处理库。

 

第一步:数据库设置

首先在项目中创建一个app。例如 python manage.py startapp app1

然后将其加入到settings.py文件中。

 

 

  1. INSTALLED_APPS = [

  2. 'django.contrib.admin',

  3. 'django.contrib.auth',

  4. 'django.contrib.contenttypes',

  5. 'django.contrib.sessions',

  6. 'django.contrib.messages',

  7. 'django.contrib.staticfiles',

  8. 'app1',

  9. ]

 

然后再数据库中建立保存图片的表。

 
  1. class IMG(models.Model):

  2. img = models.ImageField(upload_to='img')

  3. name = models.CharField(max_length=20)

这里的upload_to是指定图片存储的文件夹名称,上传文件之后会自动创建

(ps:如何不想用Django自带的数据库,可以在settings.py

文件中修改位自己用的数据库。)

执行命令做数据迁移,在执行迁移文件在数据库中创建表。

python manage.py makemigrations

python manage.py migrate

第二部:修改settings.py文件

只需要在最后的静态文件区加上下面两行代码:

 
  1. MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') #设置静态文件路径为主目录下的media文件夹

  2. MEDIA_URL = '/media/' #url映射

第三部:创建模板

在templates文件下创建一个文件(最好是我们的app的名字,以此来把页面按app分开),比如叫app1,然后在app1文件下创建我们的前端页面。

uploading.html页面:

 
  1. Title

  2. {% csrf_token %}

showing.html页面:

 
  1. Title

  2.  
  3. {% for img in imgs %}

  4. {% endfor %}

第四部:创建视图函数

views.py文件:

 
  1. from django.shortcuts import render

  2. from app1.models import IMG

  3.  
  4. def uploadImg(request):

  5. """

  6. 图片上传

  7. :param request:

  8. :return:

  9. """

  10. if request.method == 'POST':

  11. new_img = IMG(

  12. img=request.FILES.get('img'),

  13. name = request.FILES.get('img').name

  14. )

  15. new_img.save()

  16. return render(request, 'app1/uploading.html')

  17.  
  18. def showImg(request):

  19. """

  20. 图片显示

  21. :param request:

  22. :return:

  23. """

  24. imgs = IMG.objects.all()

  25. content = {

  26. 'imgs':imgs,

  27. }

  28. for i in imgs:

  29. print (i.img.url)

  30. return render(request,'app1/showing.html',content)

第五步:urls.py的配置:

 
  1. from django.contrib import admin

  2. from django.urls import path

  3. from django.conf.urls import url

  4. from app1 import views

  5. from django.conf.urls.static import static

  6. from django.conf import settings

  7. urlpatterns = [

  8. path('admin/', admin.site.urls),

  9. url(r'^upload', views.uploadImg),

  10. url(r'^show', views.showImg),

  11. ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

  12. # static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 这句话是用来指定和映射静态文件的路径

然后我们就可以实现图片的上传和显示了。

你可能感兴趣的:(django实现图片上传和图片显示)