A typescript code generator for Django Rest Framework.
Project description
django-rest-typescript-generator
A TypeScript code generator for Django Rest Framework, which saves your hand-working and guarantees consistency between Python codes and modern frontend codes written in TypeScript.
Features
It generates TypeScript codes from the 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-typescript-generator
Put a tsgconfig.py file with build tasks into your Django project's root.
from django.conf import settings
from django_rest_typescript_generator.build import build
BUILD_DIR = settings.BASE_DIR / "statics/types"
BUILD_TASKS = [
build(Foo),
build(BarSerializer, {"alias": "Foobar"}),
]
Add django_rest_typescript_generator to your INSTALLED_APPS.
INSTALLED_APPS = [
...
"django_rest_typescript_generator"
]
Run the 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
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 or Path |
enforce_uppercase | Enum | bool (False) |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_rest_typescript_generator-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3433c4b1756a9a127012af9e5677713a329dba780f3c8e90c799d19668890215 |
|
MD5 | 236913f004530231d2f3eabf039e2e64 |
|
BLAKE2b-256 | 600499641fa2fa4a566277bacf33a2c893f600617bb5529778e0792e5fcd9ba0 |
Hashes for django_rest_typescript_generator-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e89c8bfee294d0dc6292a3d5f769377c1aa418d3c2d4916ba279c3cba9f4558 |
|
MD5 | 5f53ea980c54ce4a9be9bbbc5771404f |
|
BLAKE2b-256 | 358cb6418dede386bbe027b811178e05d2b1f13c7bb53843241d69b3e3ae3df5 |