Django 无法在API中获取图像数据以及用于注册的json数据
我想创建一个注册API,在其中输入用户名、电子邮件、密码以及图像字段。我无法正确接收和处理数据。默认用户类已扩展为存储图像字段。 我有一个扩展用户模型:-Django 无法在API中获取图像数据以及用于注册的json数据,django,api,django-rest-framework,Django,Api,Django Rest Framework,我想创建一个注册API,在其中输入用户名、电子邮件、密码以及图像字段。我无法正确接收和处理数据。默认用户类已扩展为存储图像字段。 我有一个扩展用户模型:- from django.contrib.auth.models import User import os def get_upload_path(instance, filename): fileName, fileExtension = os.path.splitext(filename) return os.path.j
from django.contrib.auth.models import User
import os
def get_upload_path(instance, filename):
fileName, fileExtension = os.path.splitext(filename)
return os.path.join("user_%s" % instance.user.username,"user_{0}.{1}" .format(instance.user.username,fileExtension))
# Create your models here.
class Userprofile(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
display_picture=models.ImageField(upload_to=get_upload_path)
has_voted=models.BooleanField(default=False)
voted_item=models.CharField(max_length=200,default='none')
def __str__(self):
return self.user.username
from django.contrib.auth.models import User
from .models import Userprofile
class UserprofileSerializer(serializers.ModelSerializer):
class Meta:
model=Userprofile
fields=['display_picture']
class UserSerializer(serializers.ModelSerializer):
class Meta:
model=User
fields=['username','email','password1','password2']
path('register',views.FileUploadView.as_view(),name='Register'),
@csrf_exempt
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
这些是序列化程序:-
from django.contrib.auth.models import User
import os
def get_upload_path(instance, filename):
fileName, fileExtension = os.path.splitext(filename)
return os.path.join("user_%s" % instance.user.username,"user_{0}.{1}" .format(instance.user.username,fileExtension))
# Create your models here.
class Userprofile(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
display_picture=models.ImageField(upload_to=get_upload_path)
has_voted=models.BooleanField(default=False)
voted_item=models.CharField(max_length=200,default='none')
def __str__(self):
return self.user.username
from django.contrib.auth.models import User
from .models import Userprofile
class UserprofileSerializer(serializers.ModelSerializer):
class Meta:
model=Userprofile
fields=['display_picture']
class UserSerializer(serializers.ModelSerializer):
class Meta:
model=User
fields=['username','email','password1','password2']
path('register',views.FileUploadView.as_view(),name='Register'),
@csrf_exempt
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
这是路径/url:-
from django.contrib.auth.models import User
import os
def get_upload_path(instance, filename):
fileName, fileExtension = os.path.splitext(filename)
return os.path.join("user_%s" % instance.user.username,"user_{0}.{1}" .format(instance.user.username,fileExtension))
# Create your models here.
class Userprofile(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
display_picture=models.ImageField(upload_to=get_upload_path)
has_voted=models.BooleanField(default=False)
voted_item=models.CharField(max_length=200,default='none')
def __str__(self):
return self.user.username
from django.contrib.auth.models import User
from .models import Userprofile
class UserprofileSerializer(serializers.ModelSerializer):
class Meta:
model=Userprofile
fields=['display_picture']
class UserSerializer(serializers.ModelSerializer):
class Meta:
model=User
fields=['username','email','password1','password2']
path('register',views.FileUploadView.as_view(),name='Register'),
@csrf_exempt
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
这是视图:-
from django.contrib.auth.models import User
import os
def get_upload_path(instance, filename):
fileName, fileExtension = os.path.splitext(filename)
return os.path.join("user_%s" % instance.user.username,"user_{0}.{1}" .format(instance.user.username,fileExtension))
# Create your models here.
class Userprofile(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
display_picture=models.ImageField(upload_to=get_upload_path)
has_voted=models.BooleanField(default=False)
voted_item=models.CharField(max_length=200,default='none')
def __str__(self):
return self.user.username
from django.contrib.auth.models import User
from .models import Userprofile
class UserprofileSerializer(serializers.ModelSerializer):
class Meta:
model=Userprofile
fields=['display_picture']
class UserSerializer(serializers.ModelSerializer):
class Meta:
model=User
fields=['username','email','password1','password2']
path('register',views.FileUploadView.as_view(),name='Register'),
@csrf_exempt
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
我收到的这篇文章说:-
路径('register',views.FileUploadView.as_view(),name='register'),
AttributeError:“function”对象没有属性“as_view”您正在像函数一样装饰一个类,这就是代码被破坏的原因 要在类上使用装饰器,可以使用以下两种方法之一: 1) 装饰班级:
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt,name='dispatch')
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
2) 仅在URL中装饰:
from django.views.decorators.csrf import csrf_exempt
path('register',csrf_exempt(view.FileUploadView.as_view()))
您可以详细阅读。您正在像函数一样装饰一个类,这就是您的代码被破坏的原因 要在类上使用装饰器,可以使用以下两种方法之一: 1) 装饰班级:
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt,name='dispatch')
class FileUploadView(APIView):
parser_classes=[MultiPartParser,FormParser]
def register(self,request):
display_picture=request.FILES["display_picture"]
data=json.loads(request.data["data"])
#saving data using serializers
return JsonResponse({'message': "Registered Successfully!"},status=200)
2) 仅在URL中装饰:
from django.views.decorators.csrf import csrf_exempt
path('register',csrf_exempt(view.FileUploadView.as_view()))
你可以详细阅读