从django rest框架序列化程序生成typescript接口的简单解决方案。

django-typomatic的Python项目详细描述


django字体

Django Rest Framework Serializers生成类型脚本接口的简单解决方案。

因为我现在需要一个简单的包来为django rest框架序列化器生成typescript接口,所以我决定移植到我的Typemallow包上,以便与drf序列化器一起使用!

用法:

使用django typomatic同样简单!

首先,安装软件包 pip install django-typomatic

接下来,对于要为其生成typescript接口的django rest框架序列化程序,只需从django_typomatic模块导入ts_interfacegenerate_ts,然后将@ts_interface()类装饰器添加到django rest框架序列化程序类。

生成typescript接口所需的全部工作就是调用generate_ts()函数,并提供一个filepath作为输出结果的参数。

main.py

fromdjango_typomaticimportts_interface,generate_tsfromrest_frameworkimportserializers@ts_interface()classFoo(serializers.Serializer):some_field=serializers.CharField()another_field=serializers.DateTimeField()generate_ts('./output.ts')

output.ts

exportinterfaceFoo{some_field: string;another_field: date;}

django typomatic支持嵌套序列化器,以及作为列表的列表字段和其他字段(任何具有many=true的字段)

main.py

fromdjango_typomaticimportts_interface,generate_tsfromrest_frameworkimportserializers@ts_interface()classFoo(serializers.Serializer):some_field=serializers.IntegerField(many=True)another_field=serializers.CharField()@ts_interface()classBar(serializers.Serializer):foo=Foo()foos=Foo(many=True)bar_field=serializers.CharField()

output.ts

exportinterfaceFoo{some_field: number[];another_field: string;}exportinterfaceBar{foo: Foo;foos: Foo[];bar_field: string;}

扩展使用:

decorator函数接受一个可选参数context,默认为…嗯…'默认值'。

为什么是这样?

@ts_interfacedecorator标识序列化程序时,它将被添加到序列化程序字典中的列表中,字典键是提供给context参数的值。如果要为每个序列化器提供不同的上下文,则如果它们不存在,则将创建附加键,或者将序列化器简单地附加到现有密钥的列表中。

这很方便,因为generate_ts()函数还接受一个可选的context参数,该参数将仅在字典中的特定键处筛选序列化程序。

如果您希望将不同的上下文输出到不同的文件(例如

main.py

...fromdjango_typomaticimportts_interface,generate_tsfromrest_frameworkimportserializers@ts_interface(context='internal')classFoo(serializers.Serializer):foo=serializers.CharField()@ts_interface(context='internal')classBar(serializers.Serializer):bar=serializers.CharField()@ts_interface(context='external')classFooBar(serializers.Serializer):foo_bar=serializers.CharField()''' we're telling django-typomatic that we only want to generate interfaces from serializers with an 'internal' context to './internal.ts' '''generate_ts('./internal.ts',context='internal')''' only generate interfaces from serializers with an 'external' context to './external.ts' '''generate_ts('./external.ts',context='external')

内部.ts

exportinterfaceFoo{foo: string;}exportinterfaceBar{bar: string;}

外部.ts

exportinterfaceFooBar{foo_bar: string;}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如果我想根据不同的属性以不同的方式搜索对象,我应该使用什么样的数据结构?   从spring控制器到不同URL的java Post   上的java错误。设置值和。addValueListener   多线程是Java SwingWorker协作的吗?   Responsebuilder实体的日期属性的java值在json中设置为null   密码加密Joomla 3.3在java中加密,获取salt值   java PyCharm无法保存设置无法保存设置。请重新启动PyCharm社区版   java如何将SWT文本字段限制为一定数量的字符?   java如果您想让列表包含单个父类的各种子类,您会如何做?   有片段的java活动(bug)与没有片段的java活动(ok)   java Elasticache Memcached中密钥的最大长度是多少?   Lambda表达式和非类Java方法   路径isAbsolute方法如何运行[Java]?   java如何将方法名设置为新类中的参数?   swing Java方法应该检查图形是否不工作   java Gradle访问项目外部的文件   java无法捕获从该服务器引发的异常   java从insert中的select返回值   java如何处理海量web抓取请求