当前位置: 首页 > news >正文

Django REST framework 源码剖析-URL地址详解(Returning URLs)

Django REST framework 源码剖析-URL地址详解(Returning URLs)

reverse

  • 从 Web API 返回绝对 URI (例如 http://example.com/foobar) 可能是比返回相对 URI (/foobar) 更好。
  • REST framework 提供了两个实用函数,使从 Web API 返回绝对 URI 更加简单。
  • 您无需使用它们,但如果您这样做,那么自描述 API 将能够自动为您超链接其输出,这使得浏览 API 更加容易。

优势

  • 它更明确。
  • 它为 API 客户端减少了工作量。
  • 当在诸如 JSON 的表示中没有本地 URI 类型时,字符串的含义是没有歧义的。
  • 它使得使用超链接标记 HTML 表示等事情变得很容易。

reverse

  • 签名:reverse(viewname, *args, **kwargs)
  • 具有与 django.urls.reverse 相同的行为,除了它返回一个完全限定的 URL,使用请求来确定主机和端口。
from rest_framework.reverse import reverse
from rest_framework.views import APIView
from django.utils.timezone import now
from rest_framework.response import Responseclass APIRootView(APIView):def get(self, request):year = now().yeardata = {...'year-summary-url': reverse('year-summary', args=[year], request=request)}return Response(data)

reverse_lazy

  • 签名:reverse_lazy(viewname, *args, **kwargs)
  • 具有与 django.urls.reverse_lazy 相同的行为,除了它返回一个完全限定的 URL,使用请求来确定主机和端口。
from rest_framework.reverse import reverse_lazy
from rest_framework.views import APIView
from django.utils.timezone import now
from rest_framework.response import Responseclass APIRootView(APIView):def get(self, request):year = now().yeardata = {...'year-summary-url': reverse_lazy('year-summary', args=[year], request=request)}return Response(data)
http://www.dtcms.com/a/279810.html

相关文章:

  • 亚马逊广告进阶玩法:如何巧妙利用ASIN广告优化产品排名
  • Java面试总结(经典题)(Java多线程)(一)
  • 数据结构——优先队列(priority_queue)的巧妙运用
  • 排序树与无序树:数据结构中的有序性探秘
  • K8s存储系统(通俗易懂版)
  • 约束|additional
  • 如何更改Blender插件安装位置呢?
  • 【Vue】Vue3.6 - Vapor 无虚拟DOM
  • 算法:投票法
  • 硬盘爆满不够用?这个免费神器帮你找回50GB硬盘空间
  • SpringBoot 整合 MyBatis-Plus
  • 多线程是如何保证数据一致和MESI缓存一致性协议
  • 深入浅出Kafka Broker源码解析(下篇):副本机制与控制器
  • Open3D 点云DBSCAN密度聚类
  • 鹧鸪云重构光伏发电量预测的精度标准
  • JS解密大麦网分析
  • 06【C++ 初阶】类和对象(上篇) --- 初步理解/使用类
  • 创客匠人谈创始人 IP 打造:打破自我认知,方能筑牢 IP 变现根基
  • linux下的消息队列数据收发
  • python学智能算法(十七)|SVM基础概念-向量的值和方向
  • 计算实在论:一个关于存在、认知与时间的统一理论
  • win7+Qt1.12.3+opencv4.3+mingw32+CMake3.15编译libopencv_world430.dll过程
  • 【Python】-实用技巧5- 如何使用Python处理文件和目录
  • Java并发编程之事务管理详解
  • Redis集群方案——Redis分片集群
  • GPU集群运维
  • Unity物理系统由浅入深第六节:高级主题与前沿探索
  • 动态规划题解——乘积最大子数组【LeetCode】
  • 【EM算法】算法及注解
  • 12.4 Hinton与Jeff Dean突破之作:稀疏门控MoE如何用1%计算量训练万亿参数模型?