标签:rgb 引入 添加 ext course created path color 属性
官方文档:https://www.django-rest-framework.org/tutorial/1-serialization/
pip install djangorestframework
注册app:
INSTALLED_APPS = [ ... ‘rest_framework‘, ]
from django.db import models from django.contrib.auth.models import User class Course(models.Model): name = models.CharField(max_length=255,unique=True,help_text=‘课程名称‘,verbose_name="课程名称") introduction = models.TextField(help_text="课程介绍",verbose_name="介绍") teacher = models.ForeignKey(User,on_delete=models.CASCADE,help_text="课程讲师",verbose_name="讲师") price = models.DecimalField(max_digits=6,decimal_places=2,help_text="课程价格",verbose_name="定价") created_at = models.DateTimeField(auto_now_add=True,verbose_name="创建时间") updated_at = models.DateTimeField(auto_now=True,verbose_name="更新时间") class Meta: verbose_name = "课程信息" verbose_name_plural = verbose_name ordering = (‘-created_at‘,) def __str__(self): return self.name
我们需要开始使用Web API的第一件事是提供一种将片段实例序列化和反序列化为诸如的表示形式的方法json
。我们可以通过声明与Django形式非常相似的序列化器来实现此目的。
<1>使用ModelSerializers(模型序列化器)
就像Django提供Form
类和ModelForm
类一样,REST框架同时包含Serializer
类和ModelSerializer
类。
默认情况下,该类上的所有模型字段都将映射到相应的序列化器字段。
如果只希望在模型序列化器中使用默认字段的子集,则可以使用fields
或exclude
选项,就像使用一样ModelForm
。强烈建议您使用fields
属性显式设置应序列化的所有字段。这将减少在模型更改时导致意外暴露数据的可能性。
from .models import Course from rest_framework import serializers class CourseSerializers(serializers.ModelSerializer): class Meta: model=Course fields = (‘id‘, ‘name‘,‘URL‘, ‘introduction‘, ‘teacher‘, ‘price‘, ‘created_at‘, ‘updated_at‘) depth=2
ModelSerializer
使用显示主键建立联系,但是您也可以使depth
选项轻松生成嵌套表示,必须是一个整数。
REST_FRAMEWORK = { ‘‘‘‘‘‘ ‘URL_FIELD_NAME‘:‘link‘ #这样就可以在fields字段里添加link字段,他会自己生成。 }
Serializer
。
class CourseSerializers(serializers.ModelSerializer): teacher = serializers.ReadOnlyField(source=‘teacher.username‘) class Meta: model=Course # exclude=(‘id‘,) # fields = ‘__all__‘ fields = (‘id‘, ‘name‘,‘URL‘, ‘introduction‘, ‘teacher‘, ‘price‘, ‘created_at‘, ‘updated_at‘) depth=2
read_only_fields = [‘name‘]
<2>使用HyperlinkedModelSerializer(超链接模型序列化器)
HyperlinkedModelSerializer
类是类似于ModelSerializer,不同之处是它使用的超链接来建立联系,而ModelSerializer使用的是主键。
REST_FRAMEWORK = { ‘‘‘‘‘‘ ‘URL_FIELD_NAME‘:‘link‘ #这样就可以在fields字段里添加link字段,它默认名为URL。 }
from .serializers import CourseSerializers from rest_framework import viewsets from .models import Course class CourseList(viewsets.ModelViewSet): queryset = Course.objects.all() serializer_class = CourseSerializers #指定序列化模块
from rest_framework import routers from course import views router = routers.DefaultRouter() router.register(r‘course‘,views.CourseList) #注册路由,访问编写的试图函数。
urlpatterns = [
path(‘‘,include(router.urls)),
path(‘api-auth/‘, include(‘rest_framework.urls‘))
]
django REST框架——模型序列化器,超链接模型序列化器
标签:rgb 引入 添加 ext course created path color 属性
原文地址:https://www.cnblogs.com/nihao2/p/14032683.html