Skip to main content

A typescript code generator for Django Rest Framework.

Project description

https://github.com/jinkanhq/django-rest-tsg/actions/workflows/coverage.yml/badge.svg https://codecov.io/gh/jinkanhq/django-rest-tsg/branch/main/graph/badge.svg?token=LX8E3QB541 https://badge.fury.io/py/django-rest-tsg.svg

django-rest-tsg

A TypeScript code generator for Django Rest Framework, which saved your hand-working and guaranteed consistency between Python codes and modern frontend codes written in TypeScript.

Features

It generates TypeScript codes from following Python types.

  • Django REST Framework serializers: manual working on Serializer, ModelSerializer derived from Django ORM models, DataclassSerializer via djangorestframework-dataclasses

  • Python dataclasses: Classes decorated by dataclasses.dataclass.

  • Python enums: Subclasses of enum.Enum.

It also supports nested types and composite types.

Requirements

  • Python >3.9

  • Django >3.0

  • Django REST Framework >3.12

Usage

Install using pip

$ pip install django_rest_tsg

Put a tsgconfig.py file with build tasks into your django project’s root.

from django.conf import settings
from django_rest_tsg.build import build

BUILD_DIR = settings.BASE_DIR / "app/src/core"

BUILD_TASKS = [
    build(Foo),
    build(BarSerializer, {"alias": "Foobar"}),
]

Add django_rest_tsg to your INSTALLED_APPS.

INSTALLED_APPS = [
    ...
    "django_rest_tsg"
]

Run buildtypescript command on manage.py.

$ python manage.py buildtypescript

Or you can switch to another place.

$ python manage.py buildtypescript --build-dir /somewhere/you/cannot/explain

Examples

Input: Serializer

class PathSerializer(serializers.Serializer):
    name = serializers.CharField()
    suffix = serializers.CharField()
    suffixes = serializers.ListField(child=serializers.CharField())
    stem = serializers.CharField()
    is_directory = serializers.BooleanField(source="is_dir")
    size = serializers.IntegerField(source="stat.st_size")

Output: Interface

export interface Path {
  name: string;
  suffix: string;
  suffixes: string[];
  stem: string;
  isDirectory: boolean;
  size: number;
}

There are more examples in test cases.

Build Options

All options are listed in the table below.

Name

Context

Value

alias

All

str

build_dir

All

str | Path

enforce_uppercase

Enum

bool (False)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

django_rest_tsg-0.1.5-py3-none-any.whl (13.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page