Запрещенный <URL> Регистрация пользователя Python Django

Я создал модель Patient в файле models.py, а затем использовал сериализатор для преобразования данных. Ранее я использовал встроенную модель User и сериализаторы для выполнения регистрации пользователей, проверки электронной почты и входа в систему. Но мне пришлось добавить дополнительные поля, и я подумал, что лучше будет сделать отдельную таблицу в БД.

Я сделал миграции и изменения, но получаю запрещенную ошибку. Мне интересно, правильно ли я сделал запрос Postman или нет. Пожалуйста, помогите мне!

Мой файл models.py:

from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator


GENDER_CHOICES = (
    ('Male', 'Male'),
    ('Female', 'Female'),
    ('Other', 'Other')
)


class Patient(models.Model):
    patient_name = models.CharField(max_length=50, null=False)
    address = models.CharField(max_length=254,  null=False)
    contact_no = models.IntegerField(
        validators=[MaxValueValidator(99999999999)], blank=False)
    dob = models.DateField(null=False)
    gender = models.CharField(choices=GENDER_CHOICES,
                              max_length=128, null=False)
    email = models.EmailField(max_length=254, null=False, unique=True)
    password = models.CharField(max_length=25, null=False)
    is_active = models.BooleanField(null=False)


class VerificatonToken(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='token')
    verification_token = models.CharField(
        max_length=256, blank=True, null=True)

Мой файл serializers.py: (закомментированный код относится к тому времени, когда я использовал только serializers и User для регистрации пользователей, подтверждения электронной почты и входа в систему.

from rest_framework import serializers
from django.contrib.auth.models import User
from rest_framework.validators import UniqueValidator
from rest_framework_jwt.settings import api_settings
from .models import Patient, VerificatonToken


class TokenSerializer(serializers.ModelSerializer):
    class Meta:
        model = VerificatonToken
        fields = ('user', 'verification_token',)


class PatientSerializer(serializers.ModelSerializer):

    token = serializers.SerializerMethodField()

    # email = serializers.EmailField(
    #     required=True,
    #     validators=[UniqueValidator(queryset=User.objects.all())]
    # )

    # username = serializers.CharField(
    #     required=True,
    #     max_length=32,
    #     validators=[UniqueValidator(queryset=User.objects.all())]
    # )

    # first_name = serializers.CharField(
    #     required=True,
    #     max_length=32
    # )

    # last_name = serializers.CharField(
    #     required=True,
    #     max_length=32
    # )

    # DOB = serializers.DateField(
    #     required=True
    # )

    # gender = serializers.CharField(
    #     required=True
    # )

    # address = serializers.CharField(
    #     required=True,
    #     max_length=60
    # )

    # contactNo = serializers.IntegerField(
    #     required=True,
    #     max_length=11
    # )

    # password = serializers.CharField(
    #     required=True,
    #     min_length=8,
    #     write_only=True
    # )

    def create(self, validated_data):
        password = validated_data.pop('password', None)
        instance = self.Meta.model(**validated_data)
        if password is not None:
            instance.set_password(password)
        instance.save()
        return instance

    def get_token(self, obj):
        jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
        jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
        payload = jwt_payload_handler(obj)
        token = jwt_encode_handler(payload)
        return token

    class Meta:
        model = Patient
        fields = (
            'token',
            'patient_name',
            'password',
            # 'first_name',
            # 'last_name',
            'email',
            'is_active',
            'gender',
            'dob',
            'address',
            'contact_no',
            'id'
        )

Мой файл views.py:

Командная строка:

enter image description here

Запрос почтальона:

enter image description here

Вернуться на верх