#python #django #django-rest-framework
#python #django #django-rest-framework
Вопрос:
мой register_api не может работать, если у меня есть view
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
url-адреса
urlpatterns = [
path('', views.MainIndexView.as_view(), name='index'),
path('registration/', views.RegistrationUsersApi, name='registration')
]
и мои корневые URL-адреса
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")),
]
почему мой регистр не работает. я пытался опубликовать с помощью postman
почему Python сообщает мне, что я дал ему два аргумента, когда я дал только один? и почему у меня эта проблема, я не знаю
Комментарии:
1. Для какой строки вы получаете ошибку?
2. когда я писал вопрос, я заметил, что у меня неправильный вид, я не добавил as_view () к URL-адресам. путь. Но это не помогает до конца, следующую ошибку я получаю django.core.exceptions. Неправильно сконфигурировано: имя поля
username
недопустимо для моделиUser
.
Ответ №1:
когда я писал вопрос, я заметил, что у меня неправильный вид, не добавил as_view ()
URL-адреса. путь и
Моя пользовательская модель имела то же имя, что и стандартная, что вызвало проблемы, я удалил свою модель и начал использовать стандартную, и у меня все начало работать