python - TypeError:method() 接受 1 个位置参数,但如果我注册了 api,则会给出 2 个
问题描述
如果我有视图,我的 register_api 不能工作
class RegistrationUsersApi(viewsets.ModelViewSet):
permission_classes = [AllowAny]
def get(self, request):
queryset = User.objects.all()
serializer = UserSerializerView(queryset, many=True)
return Response(serializer.data)
def post(self, request):
serializer_class = SerializerUserRegistration(data=request.data)
data={}
if serializer_class.is_valid():
new_user = serializer_class.save()
data['response'] = 'Ура ты создал нового персонажа, героя, человека, или не создал?'
data['email'] = new_user.email
data['username'] = new_user.username
else:
serializer_class.errors
return Response(data)
我有我的序列化器
class SerializerUserRegistration(serializers.ModelSerializer):
password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True)
class Meta:
model = User
fields = ['username', 'email', 'password', 'password2']
extra_kwargs = {
'password': {'write_only': True}
}
def save(self):
user = User(
email=self.validated_data['email'],
username=self.validated_data['username'],
)
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({'password': 'Password must match'})
user.set_password(password)
user.save()
return user
和我的用户模型
class User(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
description = models.TextField(blank=True, null=True)
location = models.CharField(max_length=30, blank=True)
date_joined = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
is_organizer = models.BooleanField(default=False)
info_car = models.CharField(max_length=30, blank=True, null=True)
first_name = models.CharField(max_length=30, blank=True, null=True)
second_name = models.CharField(max_length=30, blank=True, null=True)
def __str__(self):
return self.user.username
网址
urlpatterns = [
path('', views.MainIndexView.as_view(), name='index'),
path('registration/', views.RegistrationUsersApi, name='registration')
]
和我的根网址
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('mainapp.urls')),
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path("api/accounts/", include("mainapp.urls")),
]
为什么我的寄存器不起作用。我试图与邮递员一起发帖,为什么 Python 告诉我我给了它两个参数,而我只给了一个参数?为什么我有这个问题我不知道
解决方案
当我写这个问题时,我注意到我的观点有误,没有添加as_view ()
网址。路径和
我的用户模型与标准模型同名,这导致了问题,我删除了模型并开始使用标准模型,一切都开始为我工作
推荐阅读
- sml - 如果第一个列表存在于第二个列表中,如何创建一个将两个列表作为参数并返回 true 的函数?
- fortran - 如何在 Fortran 中读取内容未用空格分隔的 2D 文件
- php - Quickbooks:如何通过交易列表获取客户
- acumatica - AMRPDetail 和 AMProdItem 之间的关系
- angular - 地图运算符不返回正确的结果
- ios - 安装后无法导入本地 CocoaPod
- html - 为什么图像从彩色叠加层中窥视?
- excel - 创建一个数组,然后用一个键盘命令一次填充一个位置?
- powerbi - 通过组合单独的日期和时间列创建一个新的数据时间列
- botframework - 尝试将Skype api与提琴手和脚本一起使用时出错