下面是关于“Django使用rest_framework写出API”的完整攻略。
1. 安装Django和rest_framework
在开始使用Django中的rest_framework库编写API之前,需要安装Django和rest_framework库,我们可以通过以下命令进行安装:
pip install django
pip install djangorestframework
2. 新建Django项目
安装完Django和rest_framework库后,我们可以新建一个Django项目,假设我们想要新建一个名为“api”的项目,可以通过以下命令进行创建:
django-admin startproject api
3. 新建Django应用
在新建好Django项目后,我们需要新建一个应用来编写我们的API,假设我们想要新建一个名为“example”的应用,可以通过以下命令进行创建:
cd api
python manage.py startapp example
4. 配置settings.py
在新建好Django应用后,我们需要将这个应用添加到Django项目的settings.py文件中,可以通过以下步骤进行配置:
第一步,打开api项目下的settings.py文件,将example应用添加到INSTALLED_APPS中,修改后的代码如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'example',
]
第二步,将rest_framework添加到api项目下的settings.py文件的INSTALLED_APPS中,修改后的代码如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'example',
]
第三步,配置rest_framework的默认设置,将以下代码添加到api项目下的settings.py文件中:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
],
}
其中DEFAULT_PERMISSION_CLASSES是默认权限设置,通过这个设置我们可以指定API的访问权限,这里我们将API的访问权限设置为了所有用户都有权限访问(rest_framework.permissions.AllowAny);DEFAULT_AUTHENTICATION_CLASSES是默认的身份验证设置,通过这个设置我们可以对API访问者的身份进行验证,这里我们指定使用SessionAuthentication和BasicAuthentication进行验证。
5. 编写model
在配置好settings.py文件后,我们需要编写model,假设我们需要编写一个名为Person的model,有以下两个字段:
- name(姓名,字符串类型)
- age(年龄,整型)
我们可以在example应用下的models.py文件中添加如下代码:
from django.db import models
# Create your models here.
class Person(models.Model):
name = models.CharField(max_length=40)
age = models.IntegerField()
6. 创建serializer
在编写好model后,我们需要编写serializer,serializer可以将model序列化成为JSON格式,反之也可以通过JSON格式创建model,假设对于上面编写的Person Model,有以下两个字段:
- name(姓名,字符串类型)
- age(年龄,整型)
我们可以在example应用下的serializers.py文件中添加如下代码:
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['id', 'name', 'age']
在这段代码中,我们通过导入rest_framework库中的serializers类来编写serializer,使用PersonSerializer类来指定序列化哪个model。
7. 编写View
在编写好serializer后,我们需要编写View,View用于对serializer进行操作,进而提供Web API。假设我们需要编写一个名为Person的API视图,可以通过以下代码在example应用下的views.py中进行编写:
from rest_framework import generics
from rest_framework.response import Response
from .models import Person
from .serializers import PersonSerializer
class PersonList(generics.ListCreateAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer
def list(self, request, *args, **kwargs):
queryset = self.get_queryset()
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
在这段代码中,我们通过导入rest_framework库中的generics类来编写View,使用PersonList类来指定对应API视图的处理。
8. 配置URL
在完成View编写后,我们需要指定API视图对应的URL,在example应用下的urls.py中添加如下代码:
from django.urls import path
from .views import PersonList
urlpatterns = [
path('person/', PersonList.as_view()),
]
在这段代码中,我们将视图类PersonList绑定到了/person/的URL上,这样用户通过访问http://127.0.0.1:8000/person/就可以访问到API视图了。
9. 启动服务并访问API
最后,我们需要启动Django服务来提供Web API,可以通过以下命令启动服务:
python manage.py runserver
启动完成后,我们就可以访问localhost:8000/person/来访问我们的API视图了。
示例说明
下面我们使用两个示例来说明如何使用Django和rest_framework编写Web API。
示例1:获取Person
假设我们需要获取Person,我们可以通过访问http://127.0.0.1:8000/person/来获取Person,API返回的数据格式为JSON,示例如下:
[
{
"id": 1,
"name": "Tom",
"age": 18
},
{
"id": 2,
"name": "Lucy",
"age": 20
}
]
示例2:添加Person
假设我们需要添加Person,我们可以通过发送POST请求到http://127.0.0.1:8000/person/来添加Person,请求的数据格式为JSON,示例如下:
{
"name": "Jerry",
"age": 22
}
添加成功后,API返回的数据格式为JSON,示例如下:
{
"id": 3,
"name": "Jerry",
"age": 22
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django使用rest_framework写出API - Python技术站