使用具有angularjs的Django Rest Framework保存图像时出错 [英] Error while saving image using Django Rest Framework with angularjs
本文介绍了使用具有angularjs的Django Rest Framework保存图像时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
models.py:
def content_file_name(instance,filename):
custt = str(datetime.now())
return'/'.join(['content',instance.blogs slug,custt,filename])
类照片(models.Model):
blogs = models.ForeignKey(Blogs)
image = models.ImageField(upload_to = content_file_name)
class Blogs(models.Model):
author = models.ForeignKey(CustomUser)
title = models.CharField(max_length = 100)
postedin = models。 ForeignKey(发布)
标签= models.ManyToManyField(标签)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField (auto_now = True)
slug = models.SlugField(max_length = 255,unique = True)
def __unicode __(self):
return'{0} self.title)
views.p y:
class PhotoViewSet(viewsets.ModelViewSet):
queryset = Photo.objects.all()
serializer_class = PhotoSerializer
def perform_create(self,serializer):
serializer.save(blogs = Blogs.objects.latest('id'))
return super(PhotoViewSet,自己).perform_create(serializer)
serializers.py:
class PhotoSerializer(serializers.ModelSerializer):
image = serializers.ImageField(
max_length = None,use_url = True,
)
class Meta:
model =照片
read_only_fields =(blogs)
js:
function uploadpic(image){
var fd = new FormData();
fd.append('image',image);
return $ http.post('/ api / v1 / uploadpic /',fd,{
headers:{'Content-Type':'application / x-www-form-urlencoded; charset = -8'}
});
}
结果:
{image:[没有提交文件。]}
另外我想知道,有没有更好的方法来获取博客的价值(外键)
解决方案
在js:
标题:{'Content-Type':undefined}
这解决了问题。 / p>
I have two models Blogs, Photo. In Photo model I have fields 'blogs' as foreign key to Blogs model.
models.py:
def content_file_name(instance, filename):
custt=str(datetime.now())
return '/'.join(['content', instance.blogs.slug,custt, filename])
class Photo(models.Model):
blogs = models.ForeignKey(Blogs)
image = models.ImageField(upload_to=content_file_name)
class Blogs(models.Model):
author = models.ForeignKey(CustomUser)
title=models.CharField(max_length=100)
postedin=models.ForeignKey(Posted)
tags= models.ManyToManyField(Tags)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
slug=models.SlugField(max_length=255,unique=True)
def __unicode__(self):
return '{0}'.format(self.title)
views.py:
class PhotoViewSet(viewsets.ModelViewSet):
queryset=Photo.objects.all()
serializer_class = PhotoSerializer
def perform_create(self,serializer):
serializer.save(blogs=Blogs.objects.latest('id'))
return super(PhotoViewSet,self).perform_create(serializer)
serializers.py:
class PhotoSerializer(serializers.ModelSerializer):
image = serializers.ImageField(
max_length=None, use_url=True,
)
class Meta:
model = Photo
read_only_fields = ("blogs",)
js:
function uploadpic(image) {
var fd = new FormData();
fd.append( 'image', image );
return $http.post('/api/v1/uploadpic/',fd, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
});
}
result:
{image: ["No file was submitted."]}
Also I want to know, is there a better way to get blogs value (Foreign Key) for Photo Model.
解决方案
In js:
headers: { 'Content-Type': undefined}
This solves the problem.
这篇关于使用具有angularjs的Django Rest Framework保存图像时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文