1. 创建Django项目和应用程序
首先,我们需要创建一个Django项目和一个Django应用程序。如果你已经有了Django项目和应用程序,请跳过这一步。
$ django-admin startproject myproject $ cd myproject $ python manage.py startapp myapp
2. 安装Django Rest Framework
安装Django Rest Framework,并将其添加到你的Django项目的INSTALLED_APPS设置中。
$ pip install djangorestframework
在settings.py文件中添加以下配置:
INSTALLED_APPS = [ # ... 'rest_framework', 'myapp', ]
3. 创建数据模型和序列化程序
我们将创建一个简单的数据模型,并使用Django Rest Framework的序列化程序将其序列化为JSON格式。
在models.py文件中添加以下代码:
from django.db import models from django.contrib.auth.models import User class MyModel(models.Model): name = models.CharField(max_length=50) owner = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return self.name
在serializers.py文件中添加以下代码:
from rest_framework import serializers from myapp.models import MyModel class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = '__all__'
4. 创建Django Rest Framework视图
我们将使用Django Rest Framework自动生成的视图来创建一个简单的API。
在views.py文件中添加以下代码:
from rest_framework import generics from myapp.models import MyModel from myapp.serializers import MyModelSerializer class MyModelList(generics.ListCreateAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer
这个视图将自动生成GET和POST方法,以检索和创建MyModel对象。现在,我们可以使用以下命令启动Django服务器:
$ python manage.py runserver
然后在浏览器中打开http://localhost:8000/mymodel/,你将看到一个JSON格式的响应,其中包含了MyModel对象的列表。
5. 扩展Django Rest Framework自动生成的API
现在我们已经创建了一个简单的Django Rest Framework API,并检索了MyModel对象的列表。我们将通过扩展这个API来添加新的功能。
添加PUT和DELETE方法
我们将添加PUT和DELETE方法,以允许客户端更新和删除MyModel对象。
在views.py文件中,将MyModelList视图类扩展为以下内容:
class MyModelList(generics.ListCreateAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs)
在这个例子中,我们重写了put()和delete()方法,并调用了update()
标签:serializers,入门,models,MyModel,Rest,Django,Framework,import,序列化 From: https://www.cnblogs.com/NKD-eck/p/17134192.html