【问题标题】:Upload a file in python/Django在 python/Django 中上传文件
【发布时间】:2017-04-05 14:13:31
【问题描述】:

我有一个问题,我正在使用 django rest 框架,我需要使用 web 服务将图像提交到服务器,但是我没有找到我真正需要的任何东西,我只想提供文件并让服务完成上传它的工作,有什么方法可以实现吗?,我只会将文件路径保存在数据库中

class AdvertisementData(EmbeddedDocument):
 id = ObjectIdField(null=False, primary_key=True)
 brand = StringField(max_length=200, required=False)
 name = StringField(max_length=200, required=False)
 description = StringField(max_length=200, required=False)
 image = StringField(required=False)//HERE THE FILEPATH
 active = BooleanField(required=True)
 target = EmbeddedDocumentField('TargetData')

我应该在这个序列化程序期间这样做

class AdvertisementDataCreateSerializer(DocumentSerializer):
brand = serializers.CharField(required=True)
name = serializers.CharField(required=True)
description = serializers.CharField(required=True)
image = serializers.CharField(required=True)
active = serializers.BooleanField(required=True)
target = TargetDataSerializer(required=True)


class Meta:
    model = AdvertisementData
    fields = ('brand', 'name','description','image','active','target')
def create(self,validated_data,**kwargs):
    vendor_id = VendorData.objects.get(vendorAuth__idp=self.context['request'].user.id)
    print(vendor_id.id)
    advertisement = AdvertisementData(id=ObjectId(), brand=self.data.get('brand'), name=self.data.get('name'),
              description=self.data.get('description'),image=self.data.get('image'), active=self.data.get('active'))
    targetaux = self.data.get('target')     
    target = TargetData(id=ObjectId(),minAge=targetaux['minAge'],maxAge=targetaux['maxAge'],gender=targetaux['gender'])
    advertisement.target = target
    vendor_id.advertisements.append(advertisement)
    vendor_id.save()
    #advertisement =  [x for x in vendor_id.advertisements if x.id == ObjectId((advertisement.id))]

    vendor_id.save()
    return advertisement

但是我不知道该怎么做我能够提供文件位置的完整路径,但不知道如何提交。

【问题讨论】:

  • 图片上传到哪里?
  • 请添加更多代码并更好地描述发生的问题,以便我们正确了解您的实际问题。现在你只显示一个类声明,它似乎没有显示出什么是错误的。
  • @FuzzyAmi 到服务器中的目录:/

标签: python django web-services file-upload


【解决方案1】:

最后我发现模型的一个巧妙的解决方案是这样的

class AdvertisementData(EmbeddedDocument):
id = ObjectIdField(null=False, primary_key=True)
brand = StringField(max_length=200, required=False)
name = StringField(max_length=200, required=False)
description = StringField(max_length=200, required=False)
image = ImageField(required=False)
active = BooleanField(required=True)
target = EmbeddedDocumentField('TargetData')


class AdvertisementDataCreateValidatorSerializer(DocumentSerializer):
brand = serializers.CharField(required=True)
name = serializers.CharField(required=True)
description = serializers.CharField(required=True)
image = serializers.CharField(required=True)
active = serializers.BooleanField(required=True)
target = TargetDataSerializer
#C:\Users\GrupoBECM09\Pictures\Test

class Meta:
    model = AdvertisementData
    fields = ('brand', 'name','description','image','active','target')

很难找到这个解决方案,但显然是我为我找到的唯一方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2018-10-23
    相关资源
    最近更新 更多