我正在通過(guò)用類(lèi)擴(kuò)展類(lèi)來(lái)編寫(xiě)創(chuàng)建用戶(hù)API。API 對(duì)于常規(guī)(如 、 、 .但后來(lái)我決定也存儲(chǔ)用戶(hù)。因此,我創(chuàng)建了一個(gè)新字段,用于將用戶(hù)的個(gè)人資料圖片的路徑存儲(chǔ)在同一擴(kuò)展模型中。usersAbstractBaseUsermodel fieldsEmailFieldCharFieldBooleanFieldprofile_pictureprofile_pictureImageFieldusersmodels.pyclass Users(AbstractBaseUser, PermissionsMixin): """ This model is used to store user login credential and profile information. It's a custome user model but used for Django's default authentication. """ email = models.EmailField(max_length=255, unique=True) first_name = models.CharField(max_length=255, blank=False, null=False) last_name = models.CharField(max_length=255, blank=False, null=False) profile_picture = models.ImageField(upload_to='Images/', max_length=None, blank=True) is_active = models.BooleanField(default=True) # defing a custome user manager class for the custome user model. objects = managers.UserManager() # using email a unique identity for the user and it will also allow user to use email while logging in. USERNAME_FIELD = 'email'然后我更新了類(lèi)以添加UserAPIViewparser_classes = (FileUploadParser)view.pyfrom django.shortcuts import renderfrom . import viewsfrom rest_framework.views import APIViewfrom django.db import IntegrityErrorfrom rest_framework import statusfrom . import models, serializersfrom rest_framework.response import Responsefrom django.core.mail import send_mailfrom rest_framework.parsers import FileUploadParserclass UserAPIViews(APIView): """ """ parser_classes = (FileUploadParser) def post(self, request, format=None): """ """ print(request.data) serialized_data = serializers.UserSerializer(data=request.data) if serialized_data.is_valid(): try: user_id = serialized_data.save() except IntegrityError as error: message = f"Email already exist." return Response ({ 'error_message' : message, 'status' : status.HTTP_226_IM_USED })
1 回答

慕村225694
TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
不是發(fā)送數(shù)據(jù)json對(duì)象,而是將數(shù)據(jù)作為表單對(duì)象發(fā)送,如果你選擇將數(shù)據(jù)作為表單對(duì)象發(fā)送,那么你需要提到parser_classes = [FileUploadParser,F(xiàn)ormParser,MultiPartParser]
以下是幫助定義表單數(shù)據(jù)的鏈接。Postman 請(qǐng)求與正文表單數(shù)據(jù)到 json
class UserSerializer(serializers.ModelSerializer): def create(self, validated_data): request = self.context.get('request') user_obj = user.User.objects.create(**validated_data)
class UserViewSet(viewsets.ModelViewSet): queryset = user.User.objects.all() serializer_class = user_details_serializer.UserSerializer # permission_classes = (AdminAccessPermission,) filter_backends = [filters.OrderingFilter, filters.SearchFilter] parser_classes = (MultiPartParser, FormParser) search_fields = ['id', 'username', 'email', 'first_name', 'last_name', 'phone', 'status'] ordering_fields = ['id', 'username', 'email', 'first_name', 'last_name', 'phone', 'status']
添加回答
舉報(bào)
0/150
提交
取消