Объяснение задачи на Django REST framework
Здраствуйте. У меня вопрос специфичного характера. Есть ТЗ (взято для тренировки) с использованием Django REST framework, понятно что именно требуется, но мне не понятна реализация.
https://github.com/avito-tech/mi-trainee-task - само ТЗ
Я знаю как реализовывать подобное на чистом Django, но не имею представления как правильно это сделать с использованием DRF. Хотелось бы увидеть подробности, можно даже без решения
P.s смотрел пояснение работы с DRF на YouTube selfedu, читал документацию, прочел Django for apis, понятен принцип работы, базовые вещи, как: сериализаторы, представления, и д.р , сама проблема с методами участвующих в работе и структуре, как правильно и в каком порядке что выполнять
Код:
# Представление для шифровки
class GeneratePageAPIView(CreateAPIView):
serializer_class = SetGenerateCode
queryset = SecretKey.objects.all()
# Представление для чтения код-фразы и выдачи сообщения
class GetSecretAPIView(APIView):
def get(self, request, secret_key):
serializer = GetSecretSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
secret = get_object_or_404(SecretKey, id=secret_key)
code = serializer.validated_data['code']
if secret.code == code:
serializer = SecretSerializer(data=secret)
return Response(serializer.data)
# Серелизатор создающий запись в БД
class SetGenerateCode(serializers.ModelSerializer):
class Meta:
model = SecretKey
fields = ('code', 'phrase', 'TTL', )
# Сериализатор должен принимать на вход фразу, и если совпала - отдать сообщение
class GetSecretSerializer(serializers.ModelSerializer):
class Meta:
model = SecretKey
fields = ('code', )
# Главная модель
class SecretKey(models.Model):
code = models.TextField(null=False, blank=False)
phrase = models.CharField(null=False, blank=False, max_length=20)
code_phrase = models.TextField(null=False, blank=False)
TTL = models.PositiveIntegerField(default=3600)