使用Django和Django Rest Framework创建RESTful API

2023-04-11 00:00:00 django rest 创建
  1. 安装Django和Django Rest Framework

安装Django和Django Rest Framework的命令如下:

pip install django
pip install djangorestframework
  1. 创建Django项目和应用程序

使用以下命令创建Django项目和应用程序:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp
  1. 创建模型

在myapp/models.py文件中定义一个模型。以下是一个简单的示例:

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField(max_length=50)
    phone = models.CharField(max_length=20)

运行以下命令创建数据库表:

python manage.py makemigrations
python manage.py migrate
  1. 创建序列化器

在myapp/serializers.py文件中定义一个序列化器。以下是一个简单的示例:

from rest_framework import serializers
from .models import Person

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = '__all__'
  1. 创建视图

在myapp/views.py文件中定义一个视图。以下是一个简单的示例:

from rest_framework import generics
from .models import Person
from .serializers import PersonSerializer

class PersonList(generics.ListCreateAPIView):
    queryset = Person.objects.all()
    serializer_class = PersonSerializer

class PersonDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Person.objects.all()
    serializer_class = PersonSerializer
  1. 创建URL模式

在myapp/urls.py文件中为视图创建URL模式。以下是一个简单的示例:

from django.urls import path
from .views import PersonList, PersonDetail

urlpatterns = [
    path('persons/', PersonList.as_view(), name='person-list'),
    path('persons/<int:pk>/', PersonDetail.as_view(), name='person-detail'),
]
  1. 注册URL模式

将myapp/urls.py文件中的URL模式注册到myproject/urls.py文件。以下是一个示例:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('myapp.urls')),
]
  1. 运行开发服务器

运行以下命令开始开发服务器:

python manage.py runserver

现在可以访问RESTful API了。例如,访问“http://127.0.0.1:8000/api/persons/”将显示所有人员的列表。

参考文献:

  • Django官方文档:https://docs.djangoproject.com/
  • Django Rest Framework官方文档:https://www.django-rest-framework.org/

相关文章