Django-DRF | 超链接

December 09, 2023
测试
测试
测试
测试
4 分钟阅读

Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

HyperlinkedIdentityField

用超链接的方式有个明确的指向,models 序列化的字段由外键变为超链接的关联形式允许直接通过 pk 跳转到 api 页面。

序列化

class CategorySerializer(serializers.ModelSerializer):
    column = ColumnSerializer()
    class Meta:
        model = Category
        fields = ['id','name', 'column']

class ArticleSerializer(serializers.ModelSerializer):
    # view_name表示路由的别名,注意如果不是根目录下,则需要使用命名空间来:,
    # lookup_field:根据表指定字段,来拼路径,生成链接
    # lookup_url_kwarg:默认是pk,(urls.py中的指定的pk)可以不写,反向解析有名分组的名字。
    category = serializers.HyperlinkedIdentityField(view_name='api:category_detail', lookup_field='category_id', lookup_url_kwarg='pk')
    class Meta:
        model = Article
        fields = ['id', 'title', 'keywords', 'description', 'cover', 'read_num', 'like_num', 'category', 'tag', 'author']

url配置

urlpatterns = [
    path('articles/', ArticListleView.as_view(), name='article_list' ),
    path('articles/<int:pk>/', ArticleDetailView.as_view(), name='article_detail'),
    path('categories/<int:pk>/', CategoryDetailView.as_view(), name='category_detail'),
]

视图

class CategoryDetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = Category.objects.all()  # 查询结果集
    serializer_class = CategorySerializer  # 序列化类

class ArticListleView(generics.ListCreateAPIView):
    queryset = Article.objects.all()  # 查询结果集
    serializer_class = ArticleSerializer # 序列化类

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多