ITPub博客

首页 > IT职业 > IT图书 > Django rest framework之HyperlinkedMo

Django rest framework之HyperlinkedMo

IT图书 作者:karson 时间:2021-09-09 09:06:26 0 删除 编辑

除了用hyperlinks表示关系不一样以外,其它类似于modelserializer类。
serializer默认包含一个url字段代替主要关键字字段。这个url字段使用HyperlinkedIdentityField.

Absolute and relative URLs
  • 绝对路径
serializer = AccountSerializer(queryset, context={'request': request})
  • 相对路径
serializer = AccountSerializer(queryset, context={'request': None})
How hyperlinked views are determined

默认情况下,hyperlinks按‘{model+name}-detail'的方式匹配,通过pk寻找instance.

  • extra_kwargs设置view_name和lookup_field
class AccountSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Account
        fields = ('account_url', 'account_name', 'users', 'created')
        extra_kwargs = {
            'url': {'view_name': 'accounts', 'lookup_field': 'account_name'},
            'users': {'lookup_field': 'username'}
        }
  • 字段中指明
class AccountSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name='accounts',
        lookup_field='slug'
    )

打印HyperlinkedModelSerializer实例的repr是一种特别有用的方法来准确检查关系是否按预期映射

Changing the URL field name

URL_FIELD_NAME

ListSerializer

设置many=True或则继承了ListSerializer就都在使用ListSerializer.
allow_empty属性默认true,判断是否允许空值。
list_serializer_class操作添加到meta里面可以定制对对象的操作.

BaseSerializer

BaseSerializer类可用于轻松支持替代序列化和反序列化样式。
在这样做时,您会注意到的唯一的区别是BaseSerializer类不会在可浏览的API中生成HTML表单。 这是因为他们返回的数据不包括所有的字段信息,这将允许每个字段被渲染成一个合适的HTML输入。
图片描述
图片描述

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1542/viewspace-2799489/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    81
  • 访问量
    660