django中多图片上传与保存几种方法。

django中图片上传与保存的问题以及几种解决方法

  • 问题描述:在django框架中上传与访问多张图片的方法;
    • 创建django项目
    • 创建数据库模型,此处直接上代码(models.py文件)
    • 实现上传的方法1(views.py文件)
    • 实现上传的方法2(views.py文件)
  • 至此文件的保存已经完毕,如果需要在前端界面访问,需选择下边的三种之一设置
    • (1)将图片的上传至静态文件路径下,即修改模型文件models.py中upload_to参数
    • (2)修改django的静态文件访问路径(settings.py文件设置如下)
    • (3) 设置文件的媒体文件访问路径(个人理解和设置静态文件一样,django访问的时候不走路由,走静态文件访问路径)(强烈推荐*****)
  • 至此已经总结完毕,谢谢

问题描述:在django框架中上传与访问多张图片的方法;

此博客均为手码,如果有不妥,敬请指正

创建django项目

使用django命令或者pycharm等编辑器,相信你都会创建,在这就写了,如果需要下次会补上;

创建数据库模型,此处直接上代码(models.py文件)

    class TestCar(models.Model):
        test_img = models.ImageField('汽车图片', upload_to='img/test/', default='')
		#upload_to参数为指定的文件服务器上保存路径,如果没有该目录django会自动创建

实现上传的方法1(views.py文件)

	# 相信路由你已经定义好了,在此我只给出实现方法
	import os
	from .models import TestCar
    img_files = request.FILES.getlist("images","")
    for img in img_files:
        # 这种思路是仅仅保存了文件到服务器,需要单独保存文件路径到数据库
        file = open(os.path.join('img/car',img.name),'wb')
        for chunk in img.chunks():
        	# 保存文件路径
        	testcar = TestCar(test_img='img/car'+img.name)
        	testcar.save()
        	# 保存文件到 img/car 下
            file.write(chunk)
        file.close()

实现上传的方法2(views.py文件)

	# 在此我也只给出实现方法
   from .models import TestCar
   img_files = request.FILES.getlist("images","")
   for img in img_files:
       # 另外一种思路 由django自动保存文件到服务器并且保存文件路径到数据库
       car = TestCar(test_img=img)
       car.save()

至此文件的保存已经完毕,如果需要在前端界面访问,需选择下边的三种之一设置

(1)将图片的上传至静态文件路径下,即修改模型文件models.py中upload_to参数

    class TestCar(models.Model):
        test_img = models.ImageField('汽车图片', upload_to='static/img/car/', default='')
   		# 此种方法会将所有的图片传入静态文件路径,不推荐

(2)修改django的静态文件访问路径(settings.py文件设置如下)

	# 此种方法和第一中没有区别,故也不推荐,推荐使用第三种
	STATIC_URL = '/img/car/'
	STATICFILES_DIR = os.path.join(BASE_DIR, 'img/car') 

(3) 设置文件的媒体文件访问路径(个人理解和设置静态文件一样,django访问的时候不走路由,走静态文件访问路径)(强烈推荐*****)

# 1,设置settings.py文件
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 即项目路径下的media文件夹,没有则自动创建
MEDIA_URL = '/media/'  # 这个是在浏览器上访问该上传文件的url的前缀
# 2, 设置主路由文件urls.py
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# 3,模板文件访问给出简单访问示例(记得加/media)

至此已经总结完毕,谢谢

你可能感兴趣的:(django)