问题
I cannot upload file with another email field, when using "multipart/form-data", please help me, thanks in advance
model.py
class UserManager(models.Manager):
def create(self, **kwargs):
kwargs['salt'] = None
if 'password' in kwargs and kwargs['password']:
kwargs['salt'] = String.random_string()
kwargs['password'] = hashlib.md5(kwargs['password'] + kwargs['salt']).hexdigest()
user = super(UserManager, self).create(**kwargs)
return user
class User(models.Model):
email = models.EmailField(max_length=100, unique=True, null=False, default=None)
phone = models.CharField(max_length=250, unique=True, null=False, default=None)
username = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=255, blank=True, null=True)
salt = models.CharField(max_length=32, blank=True, null=True)
first_name = models.CharField(max_length=100, blank=True, null=True)
middle_name = models.CharField(max_length=100, blank=True, null=True)
last_name = models.CharField(max_length=100, blank=True, null=True)
birthday = models.DateField(blank=True, null=True)
gender = models.IntegerField(default=1)
address = models.CharField(max_length=255, blank=True, null=True)
avatar = models.ImageField(max_length=255, blank=True, null=True, upload_to='images/%Y/%m/%d')
status = models.IntegerField(default=1)
register_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True, auto_now_add=True)
objects = UserManager()
class Meta:
db_table = 'users'
ordering = ('register_date', )
serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'email', 'phone', 'username', 'password', 'salt',
'first_name', 'middle_name', 'last_name', 'birthday', 'gender',
'address', 'avatar', 'status', 'register_date', 'update_date')
view.py
class User(APIView):
parser_classes = (MultiPartParser, FormParser, )
def post(self, request, format=None):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
But when I test upload via Advanced Rest Client (Chrome extension) with multipart/form-data, I get error
{"email":["Enter a valid email address."]}
How can I fix this issue, thanks so lot
来源:https://stackoverflow.com/questions/27833413/django-rest-upload-file-and-invalid-email