1.简介
其实就是创建一个链接,把查询到对象放到链接上,点链接可以查看。实际上用的很少。
2.
views代码
查找的是一个对象的所有数据,link只是放在这个对象其中一个字段上的数据。
from django.shortcuts import render,HttpResponse,redirect,reverse from django.http import JsonResponse from app01 import models from rest_framework.views import APIView from app01 import MySer # Create your views here. class Book(APIView): def get(self,request,*args,**kwargs): books=models.Book.objects.all() #这里的context={'request':request}传过去的request的变量是要拿到前面的链接,即ip或域名,不然无法生成新的链接 book_ser=MySer.BookSerializer(books,many=True,context={'request':request}) #返回的必须是book_ser.data return JsonResponse(book_ser.data,safe=False) class Publish(APIView): def get(self,request,pk,*args,**kwargs): publish=models.Publish.objects.filter(pk=pk).first() publish_ser=MySer.PublishSerializer(publish,many=False) return JsonResponse(publish_ser.data,safe=False)
自定义myser代码
lookup_field指的是根据哪个字段生成链接,lookup_url——kwarg指的是有名分组的分组名
from app01 import models from rest_framework.serializers import Serializer, ModelSerializer from rest_framework import serializers from rest_framework.exceptions import ValidationError class AuthorSerializer(serializers.Serializer): name = serializers.CharField() age = serializers.CharField() class BookSerializer(serializers.Serializer): name = serializers.CharField() # view_name指的是配置的路由解析,lookup_field指的是查找的字段,lookup_url_kwarg指的是路由输入的有名分组 publish = serializers.HyperlinkedIdentityField(view_name='sss', lookup_field='publish_id',lookup_url_kwarg='pk') class PublishSerializer(serializers.ModelSerializer): class Meta: model = models.Publish fields = '__all__' # class BookSerializer(serializers.ModelSerializer): # class Meta: # model = models.Book # fields = '__all__' # # #这里设置的校验,是对方提交过来时的校验 # name = serializers.CharField(min_length=2, max_length=10, # error_messages={'min_length': '最短为2', 'max_length': '最长为10', 'required': '这个必须填'})