首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ImageField in RestFramework

Django ImageField in RestFramework
EN

Stack Overflow用户
提问于 2018-01-23 08:03:44
回答 1查看 962关注 0票数 4

我是Django新来的。我的项目在DjangoRestFramework

该项目有一个用户:

models.py:

代码语言:javascript
复制
class Users(models.Model):
    name = models.CharField(max_length=20, null=True)
    lastName = models.CharField(max_length=50, null=True)
    phone = models.IntegerField(unique=True, null=False, default='phone')
    password = models.CharField(max_length=25, null=True)
    natNum = models.IntegerField(unique=True, null=True)
    degImage = models.ImageField(upload_to='Images/degrees/', null=False, blank=False,default='Images/degrees/None/no-img.jpg')
    natImage = models.ImageField(upload_to='Images/nationalCards/', null=False, blank=False,default='Images/nationalCards/None/no-img.jpg')
    sex = models.CharField(null=True, max_length=1)
    province = models.CharField(null=True, max_length=20)
    city = models.CharField(null=True, max_length=40)
    job = models.CharField(null=True, max_length=20)
    code = models.CharField(max_length=4, null=True)
    last_seen = models.DateTimeField(default=django.utils.timezone.now)
    points = models.IntegerField(null=False, default=0)
    scorers = models.IntegerField(null=False, default=0)

在views.py中,我创建了一个注册函数,但是对于degImage和natImage,存在一个问题。

views.py

代码语言:javascript
复制
@api_view(["POST"])
@parser_classes((MultiPartParser, JSONParser))
def register(request):
    user_data = request.data
    if user_data:
        serializer = UserSerializers(data=user_data)

        if serializer.is_valid():

            phone_number = serializer.validated_data["phone"]

            try:
                found_user = Users.objects.get(phone=phone_number)
            except Users.DoesNotExist:
                found_user = None

            if found_user:
                return Response({
                    "code": 211,
                    "status": "successfull",
                    "message": "user already exists, try to login"
                })
            else:
                destination = serializer.validated_data['phone']
                message = str(random.randint(1000, 9999))
                url = "https://panel.asanak.ir/webservice/v1rest/sendsms/?Username=***&Password=***&Source=***&Destination={}&message={}"
                url = url.format(destination, message)
                r = requests.get(url)
                r.json()
                registerInfo = {
                    'name': serializer.validated_data['name'],
                    'lastName': serializer.validated_data['lastName'],
                    'phone': serializer.validated_data['phone'],
                    'natNum': serializer.validated_data['natNum'],
                    'password': serializer.validated_data['password'],
                    'degImage': serializer.validated_data['degImage'],
                    'natImage': serializer.validated_data['natImage'],
                    'sex': "",
                    'province': "",
                    'city': "",
                    'job': "",
                    'code': message
                }

                serializer.save(registerInfo)

                return Response({
                    "code": 200,
                    "status": "successfull",
                    "message": "code was sent try to validate code"
                })
            return Response({
                "status": "successfull",
                "error": "user created :)"
            })

        else:
            return Response({
                "status": "error",
                "error": "Bad request"
            })
    else:
        return Response({
            "status": "error",
            "error": "Empty request"
        })

serializers.py

代码语言:javascript
复制
class UserSerializers(serializers.Serializer):
    name = serializers.CharField(required=True)
    lastName = serializers.CharField(required=True)
    phone = serializers.CharField(required=True)
    natNum = serializers.IntegerField(required=True)
    password = serializers.CharField(required=True)
    degImage = serializers.ImageField(required=False)
    natImage = serializers.ImageField(required=False)
    code = serializers.CharField(required=False)

    def save(self, validated_data):
        user = Users(
            name=validated_data['name'],
            lastName=validated_data['lastName'],
            phone=validated_data['phone'],
            natNum=validated_data['natNum'],
            password=validated_data['password'],
            degImage=validated_data['degImage'],
            natImage=validated_data['natImage'],
            code=validated_data['code']
        )
        user.save()
        return user

在邮递员中,当我选择一个文件时,它可以正常工作。

但是在开发android和iOS时,他们不能在json中与其他字段一起发布图像。

我想知道,在我的编码中有什么问题会导致这个问题,或者我们可以做些什么来解决这个问题?

如果有什么事情要做,请告诉我。

我在服务器上运行我的项目,您可以使用下面的ip来检查它:

http://176.31.82.35:3030/moshaver/register

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 08:18:09

我们不能发送带有标题“Content: application/json”的文件类型。请确保您的请求头应该设置为“Content:multipart/form”。在使用解析器MultiPartParser, JSONParser时,它将解析文件数据和json数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48396819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档