Django前后端分离实践之DRF--07

简介: 一、超链接API目前我们的API中的关系是用主键表示的。我们将通过使用超链接来提高我们API的内部联系。1. 新建一张表(模型类)class Book(models.

一、超链接API

目前我们的API中的关系是用主键表示的。我们将通过使用超链接来提高我们API的内部联系。

1. 新建一张表(模型类)

class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name='书名')
    publisher = models.ForeignKey('Publisher')

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '书'
        verbose_name_plural = verbose_name

2. 生成迁移文件和执行迁移

3. 创建书的序列化

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Book
        fields = (
            'id',
            'title',
            'publisher'
        )

4. 编写Book相关视图

class BookList(generics.ListCreateAPIView):
    queryset = Book.objects.all()
    serializer_class = serializers.BookSerializer
    permission_classes = (permissions.IsAuthenticated,)


class BookDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Book.objects.all()
    serializer_class = serializers.BookSerializer
    permission_classes = (permissions.IsAuthenticated)
img_437ac7c739cdda6f2bc9f2c5fbbe7f4b.png
选区_016

5. 增加新的路由

    url(r'^books/$',views.BookList.as_view()),
    url(r'^books/(?P<pk>[0-9]+)/$',views.BookDetail.as_view())
img_2d9ef5df542c390d09ffdcca9e176ec6.png
选区_017
  • 没数据
img_db330f3e4a483d0f4c3d073496cea4c1.png
选区_018

6. 增加几条数据

img_0228a1d5c5a395b2138707702742749d.png
选区_019
img_cc8c2c9ca435b9ec9dc7576a8a5b3109.png
选区_020

7. 通过外键重写显示字段转化为字符串(StringRelatedField)

publisher = serializers.StringRelatedField(source='publisher.name')
img_d2b601155146f692d64f19dd87e6c614.png
选区_021
img_807159c725634129a5c69a5db1511c3b.png
选区_022

8.设置超链接

img_15bca71e5078cf6b23d1b6c0a520cf00.png
选区_023
  • 解决报错
img_094cbab6bdd59144eafa67c441aa6c13.png
选区_024
img_6e10bb9733fba8e0f92b69b6252c4e57.png
选区_025
img_b64aac1d31918044160e2a822489cb20.png
选区_026

二、浏览API

1. 导入模块

from rest_framework.reverse import reverse

2. 编写视图函数

@api_view(['GET'])
def api_root(request, format=None):
    return Response(
        {
            'publishers': reverse('publisher-list', request=request, format=format),
            'books': reverse('books_list', request=request, format=format)
        }
    )
img_fc9c5ab7991e0320ae059262ce95b98a.png
选区_030

3. 在app下面单独创建一个urls

img_7de3bff4239dcf2996015a489c118a58.png
选区_027
from django.conf.urls import url, include
from app01 import views


urlpatterns = [

    url(r'^publishers/$', views.PublisherList.as_view(), name='publisher-list'),
    url(r'^publishers/(?P<pk>[0-9]+)/$', views.PublisherDetail.as_view(), name='publisher-detail'),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest-framework')),
    url(r'^books/$', views.BookList.as_view(), name='books_list'),
    url(r'^books/(?P<pk>[0-9]+)/$', views.BookDetail.as_view(), name='books-detail')

]


img_195198e0acada3ed683451136c8261e7.png
选区_028
img_51511ab5862a028eb02ec4f723a92d74.png
选区_029
  • 刷新浏览器,展示所有api
img_0aedbc76258160512ca6b19839298214.png
选区_031

三、分页

设置分页样式

'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
img_4a72d3e92456c7a165aab760425717a0.png
选区_032

[图片上传失败...(image-f97ab3-1540133351593)]

img_4e694a12572fe05c05973dbcaff0d239.png
选区_054

分页_拓展阅读

目录
相关文章
|
2月前
|
Python API 网络架构
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
|
2月前
|
中间件 程序员 开发工具
Django实践-08中间件的应用
Django实践-08中间件的应用
Django实践-08中间件的应用
|
28天前
|
存储 监控 调度
Django中的定时任务与后台任务队列的实践
【6月更文挑战第10天】在Django中实现定时任务和后台任务队列,可以使用Celery+Beat进行定时任务,Django Q处理后台任务。Celery配置包括设置Broker和Result Backend,创建Celery实例及任务。Django Q则涉及安装、配置ORM和创建任务。通过`async_task`将任务放入队列。注意性能、资源、安全和错误处理。使用时需考虑认证、输入验证、日志监控、部署策略和测试质量保障。
20 3
Django中的定时任务与后台任务队列的实践
|
17天前
|
安全 API 数据安全/隐私保护
Django REST framework安全实践:轻松实现认证、权限与限流功能
Django REST framework安全实践:轻松实现认证、权限与限流功能
|
17天前
|
JSON 前端开发 API
Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
|
17天前
|
JSON 搜索推荐 数据库
Django REST framework数据展示技巧:分页、过滤与搜索的实用配置与实践
Django REST framework数据展示技巧:分页、过滤与搜索的实用配置与实践
|
1月前
|
中间件 数据库 数据安全/隐私保护
Django框架的深入探索与实践
本文介绍了Django,一个流行的Python Web框架,以其优雅设计和强大功能吸引开发者。Django遵循MVC模式,提供URL路由、模板引擎和ORM等核心组件,强调高效简洁的开发方式。文中详细阐述了Django的安装配置过程,核心组件包括URL路由、视图模板和模型ORM。此外,还探讨了Django的表单处理、用户认证、中间件和信号等进阶应用。Django凭借其不断发展的特性和全面的Web开发解决方案,持续受到开发者的青睐。【6月更文挑战第8天】
27 4
|
17天前
|
存储 安全 数据库
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
|
17天前
|
数据库 开发者 Python
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
|
2月前
|
测试技术 持续交付 Docker
Django中的自动化部署与持续集成实践
【4月更文挑战第15天】本文介绍了Django项目中自动化部署与持续集成的实践方法。自动化部署通过选择Ansible、Fabric或Docker等工具,编写部署脚本,配置持续集成工具(如Jenkins、GitLab CI),确保服务器环境一致,实现快速应用上线。持续集成则涉及配置版本控制系统,设置自动化构建和测试,编写全面的测试用例,集成代码质量检查工具,并配置通知机制,以提升代码质量和开发效率。这两者结合能有效提升项目的迭代速度和可靠性。