• Как сделать аутентификацию по номеру телефона?

    @C0uchP0tat0
    Скорее всего уже не актуально, но напишу ответ на всякий случай, возможно кому-то будет полезно. Я использую библиотеку drfpasswordless. Она предлагает использовать twilio для СМС рассылки по API, но вы можете написать свою функцию для отправки СМС используя любого провайдера, который Вам нравится и подключить к библиотеке с помощью:
    # configurable function for sending sms
        'PASSWORDLESS_SMS_CALLBACK': 'drfpasswordless.utils.send_sms_with_callback_token',

    А так же подключить свою функцию выпуска токена авторизации:
    'PASSWORDLESS_AUTH_TOKEN_CREATOR': 'drfpasswordless.utils.create_authentication_token',

    А если вам очень хочется кастомизировать сообщения DRF или добавить какую то свою логику авторизации, то вы всегда можете написать свои views, а приложение использовать исключительно для создания шестизначных токенов, отправляемых по СМС и их подтверждения на стороне сервера.
    Ответ написан
    1 комментарий
  • Как соединить модели между собой в django?

    @C0uchP0tat0
    Думаю ответ будет примерно такой
    # model
    class Bookmark(models.Model):
    class Meta:
    abstract = True

    user = models.ForeignKey(User)

    class BookmarkObject(Bookmark):
    class Meta:
    db_table = "bookmark_object"

    obj = models.ForeignKey(Book,
    null=True,
    on_delete=models.CASCADE)

    class BookmarkView(APIView):
    model = BookmarkObject
    permission_classes = [IsAuthenticated]
    def post(self, request, pk):
    # получаем пользователя
    user = self.request.user.id
    # получаем или создаём закладку
    bookmark_object, created = self.model.objects.get_or_create(user=user,
    obj_id=pk)
    if not created:
    bookmark_object.delete()

    return Response(status.HTTP_201_CREATED)
    Ответ написан
    Комментировать