Django Rest Framework - 安装,配置 与 新建 Serialization

1.安装

安装 Rest FrameWork 使用的是 pip 安装, Linux 与 Mac OS可以 安装pip进行直接操作下面命令:

pip install djangorestframework #安装框架

windows 的话,可以通过 Anaconda 中的pip命令进行安装配置;

包管理工具安装可以看:

windows 下安装 anaconda 与 linux 下安装pip配置


2.配置

mysite/setting.py

配置INSTALLED_APPS

INSTALLED_APPS = [
  ...
 'rest_framework', #配置 rest_framework app
  ...
]

e.g

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'testapp',
    'testrestapi',
    'rest_framework', #配置 rest_framework app
]

好吧,配置如此简单。更多 REST_FRAMEWORK 的配置 将在后面使用到的时候,进行列举。


3. 开启api工程

api工程 和django中的app一样,使用命令新建即可。

比如我们新建 名为 testrestapi 的 app:

python manage.py startapp testrestapi #新建app

更多内容 : Django - 创建工程 和 APP 与 开发工具,别忘记在 setting.py 和 urls.py 中进行配置。


4. 新建model

testrestapi/model.py

新建实体 Party ,添加ordering 以 创建日期排序;

class Party(models.Model):
    create_date = models.DateTimeField(auto_now_add=True)
    content = models.TextField()
    title = models.CharField(max_length=50, default='this is a party')
    address = models.CharField(max_length=50, default="ShangHai")
    is_off = models.BooleanField(default=False)
    link = models.CharField(max_length=200, default="http://www.baidu.com")

    class Meta:
        ordering = ('create_date',)

4. 新建Serializer

在testrestapi 下新建 serializer.py ,实现 PartySerializer

testrestapi/serializer.py

Serializer 实现,这里列举2种简单的实现方式: 继承 ModelSerializer

1)指定部分字段

class PartySerializer(serializers.ModelSerializer):
    class Meta:
        model = Party
        fields = ('id', 'create_date', 'content', 'title', 'address', 'is_off', 'link')

2)指定全部字段

class PartySerializer(serializers.ModelSerializer):
    class Meta:
        model = Party
        fields = '__all__'

5. Serializer 进阶

这里以Person及其Serializer进行说明

实体 Person

class Person(models.Model):
    name = models.CharField(max_length=20, default='Lao')
    weight = models.FloatField()
    height_cm = models.IntegerField()

序列化 Person1Serializer

class Person1Serializer(serializers.ModelSerializer):
    name = serializers.CharField(max_length=20)
    weight = serializers.FloatField()
    height = serializers.IntegerField()

    # validate_fieId : 验证name是否符合需求
    def validate_name(self, value):
        print('validate_name', type(value), value)
        return value

    def validate(self, attrs):
        print('validate', type(attrs), attrs)
        if attrs['weight'] > 100:
            raise serializers.ValidationError('your weight is too fat')
        return attrs

    def create(self, validated_data):
        print('create', type(validated_data), validated_data)
        height = validated_data['height']
        weight = validated_data['weight']
        name = validated_data['name']
        print(height)
        person = Person(name=name, weight=weight, height=height)
        person.save()
        return person

    def update(self, instance, validated_data):
        print('update', type(instance), instance, validated_data)
        instance.name = validated_data.get('name', instance.name)
        instance.weight = validated_data.get('weight', instance.weight)
        instance.height_cm = validated_data.get('height', instance.height_cm)
        instance.save()
        return instance

    class Meta:
        model = Person
        fields = ('name', 'weight', 'height')

提交的json

Content - type : application/json

{
    "name": "test",
    "weight": 123,
    "height": 12,
}

属性说明:

比如说 这个序列化中 有nameweight , height 三个属性,必须对应的是Class Meta中的fieIds中的固定值,而fieIds最好与表单中的或json中提交的参数一致,当然还有实体中的属性,见上面的Person实体PsersonSerializer提交的 Json

方法说明 :

  • validate_fieId 可以验证某个字段是否符合条件
  • validate 通过attrs参数,可以拿到表单或json提交的数据,以验证数据
  • create 方法 可以进行查询/存储操作 ,参数 validated_data 是验证后的数据
  • update 执行修改的时候将要执行操作 参数 validated_data 是验证后的数据 ,instance 是model对应的实体

6. 总结

参考 : Tutorial 1: Serialization

源码 : django-mysite-frist

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST Framework Cache是一个Django框架的扩展,用于缓存REST API的响应数据。它提供了一种简单的方式来缓存API视图的响应,以减少数据库查询和加快请求的响应速度。 使用Django REST Framework Cache,你可以通过在视图类或视图函数上添加装饰器来启用缓存。这个扩展支持多种缓存后端,包括内存缓存、数据库缓存和文件缓存等。你可以根据你的需求选择适合的缓存后端。 为了使用Django REST Framework Cache,你需要在你的Django项目中安装配置它。你可以通过pip安装它: ``` pip install djangorestframework-cache ``` 安装完成后,在你的项目的settings.py文件中添加以下配置: ```python INSTALLED_APPS = [ ... 'rest_framework_cache', ] CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } REST_FRAMEWORK_CACHE = { 'DEFAULT_CACHE_BACKEND': 'default', } ``` 然后,在你的API视图类或函数上使用`@cache_response`装饰器来启用缓存: ```python from rest_framework.decorators import api_view from rest_framework_cache.decorators import cache_response @api_view(['GET']) @cache_response(timeout=60*60*24) # 缓存一天 def my_view(request): ... ``` 这样,当该API被访问时,响应数据将会被缓存,并在下次请求相同的API时直接返回缓存的响应数据,而不需要执行相同的查询操作。 通过使用Django REST Framework Cache,你可以有效地提高REST API的性能和响应速度,并减少对数据库的负载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值