Запрещенный <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:
Командная строка:
Запрос почтальона: