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.2
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) |
Metadata
Release files for django-rest-tsg 0.1.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_rest_tsg-0.1.10-py3-none-any.whl | Python 3 | none | any | Details |
Release files / django_rest_tsg-0.1.10-py3-none-any.whl
| Download URL | django_rest_tsg-0.1.10-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e9dc80cfc2fd78ecfd2cbc491b6199450eede9e716358a838540dc59bec1277
|
|
BLAKE2b-256 checksum How to use checksums |
db4d9c2b161a2f1d17736052d099662db5fa00611fe73945b39be06b185eecd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.8
|