为了利用Django的ImageField和FileField格式实现多图,多文件上传,在网上找了很久,基本上不是代码不全,就是报错一堆,因为这种格式可以和django的admin相结合,非常不甘心,终于在今天结合多个demo演练成功了。
时间有限先贴代码,有时间再详细写注释
app结构,其中imgs_db是本次的多图上传,files_db是本次多文件上传
基本工作:
新建app,修改setting.py中的installed_app和静态路径,增加媒体路径
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') #设置静态文件路径为主目录下的media文件夹
MEDIA_URL = '/media/'
数据库如果是mysql的请新建好,设置页面修改(这里略)
一、多图上传
1.models.py
from django.db import models
class Imgs(models.Model):
id = models.AutoField(max_length=10, primary_key=True, verbose_name='id')
img = models.ImageField(upload_to='./imgs/',verbose_name='图片地址')
single = models.CharField(max_length=20,null=True, blank=True,verbose_name='图片名称')
def __unicode__(self): # __str__ on Python 3
return (self.id,self.img)
def __str__(self):
return str(self.single)
class Imgs_name(models.Model):
id = models.AutoField(max_length=10, primary_key=True, verbose_name='id')
name = models.CharField(max_length=10,verbose_name='图片库名称')
imgs = models.ManyToManyField(Imgs, related_name='imgs',verbose_name='图片表')
def __unicode__(self): # __str__ on Python 3
return (self.id,self.name,self.imgs)
def __str__(self):
return self.name
2. view.py
from django.http import HttpResponseRedirect
from django.shortcuts import render,HttpResponse
from imgs_db.models import Imgs_name,Imgs
import random
def up_imgs(request):
return re