从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 GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面