Python 使用Django上传图像
我正在尝试使用Django作为后端上传照片 我使用的模型是:Python 使用Django上传图像,python,django,Python,Django,我正在尝试使用Django作为后端上传照片 我使用的模型是: def inspection_picture_path(self, filename): return 'inspection_{0}/{1}'.format(self.inspection.id, filename) class InspectionPictures(models.Model): inspection = models.ForeignKey(Inspection, on_delete=models
def inspection_picture_path(self, filename):
return 'inspection_{0}/{1}'.format(self.inspection.id, filename)
class InspectionPictures(models.Model):
inspection = models.ForeignKey(Inspection, on_delete=models.CASCADE)
picture = models.FileField(upload_to=inspection_picture_path, blank=True)
def __str__(self):
return "Inspection-{}".format(self.inspection.id)
在settings.py
中,我有:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'master/static/master/img/inspection_pictures'),
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'master/static/master/img/inspection_pictures'),)
我试图保存图像的视图中的函数如下所示:
def save_pictures(inspection, pictures):
print(pictures)
for picture in pictures['pictures']:
n_picture = InspectionPictures()
n_picture.inspection_id = inspection.id
n_picture.picture = picture
n_picture.save()
@token_required
@transaction.atomic
def add_inspection(request):
if request.method == "POST":
data = json.loads(request.POST.get('data'))
pictures = request.FILES
n_inspection = Inspection()
n_inspection.user_id = data['user']['id']
n_inspection.data = json.dumps(data)
n_inspection.save()
save_pictures(n_inspection, pictures)
return HttpResponse("Its ok.", status=200)
else:
return HttpResponse("Something went wrong.", status=400)
打印(图片)
给出以下结果:
<MultiValueDict: {'pictures': [<InMemoryUploadedFile: samsung-s8.png (image/png)>, <InMemoryUploadedFile: Simulator Screen Shot 6 Jul 2017, 15.43.55.png (image/png)>]}>
而检验
型号为:
class Inspection(models.Model):
user = models.ForeignKey(to=User)
data = models.TextField(null=False, blank=False, default=None)
history = HistoricalRecords()
class Meta:
verbose_name_plural = "Inspections"
你能给我们看一下视图吗?你能同时发布模型检验代码吗?@be_good_do_good我已经更新了我的问题。@FazilZaid更新了。