【问题标题】:Error while saving image using Django Rest Framework with angularjs使用带有 angularjs 的 Django Rest Framework 保存图像时出错
【发布时间】:2017-01-19 06:59:48
【问题描述】:

我有两个模特博客,照片。在照片模型中,我将字段“博客”作为博客模型的外键。

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'}
});
}

结果:

{image: ["没有提交文件。"]}

我也想知道,有没有更好的方法来获取照片模型的博客价值(外键)。

【问题讨论】:

  • 你试过serializer.save(blogs=Blogs.objects.latest('id'), image=self.request.FILES['image'])吗?
  • 检查您提交的表单数据是否也有图像文件。
  • @Rohan Form Data 'Content-Disposition: form-data;名称=“图像”; filename="bread.jpg" Content-Type: image/jpeg '

标签: python angularjs django django-rest-framework


【解决方案1】:

在js中:

headers: { 'Content-Type': undefined}

这样就解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2017-03-21
    • 2018-07-14
    相关资源
    最近更新 更多