【极简】快速创建Django REST API项目的步骤

327 阅读1分钟

初始化应用

创建一个名为demoproject的项目,名为demoapp的应用

django-admin startproject demoproject
python manage.py startapp demoapp

修改demoproject/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",  # new
    "snippets",  # new
]

模型

在demoapp/models.py中,创建一个新模型DemoModel。2个字段:created和title(默认会生成id字段)

from django.db import models

# Create your models here.
class DemoModel(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default="")

    def __str__(self):
        return self.title

migrate文件,初始化同步数据库

python manage.py makemigrations demoapp
python manage.py migrate

然后,在demoapp/admin.py中注册我们的模型

from django.contrib import admin
from .models import DemoModel
# Register your models here.
admin.site.register(DemoModel)

创建超级用户

python manage.py createsuperuser

现在可以启动看看了

python manage.py runserver

打开 http://127.0.0.1:8000

http://127.0.0.1:8000/admin 管理界面,使用刚刚创建的账号登录

[Demo models], Add添加一个新的model实例

序列化

将模型实例序列化转换为Json。这样才能在网络中传输,暴露为Rest API供其它应用调用。

创建demoapp/serializers.py文件。

from rest_framework import serializers
from .models import DemoModel


class DemoModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = DemoModel
        fields = (
            "id",
            "title",
        )

创建文件demoapp/view.py,包括2个View:列表DemoList和详情DemoDetail。

from rest_framework import generics
from .models import DemoModel
from .serializers import DemoModelSerializer


class DemoList(generics.ListCreateAPIView):
    queryset = DemoModel.objects.all()
    serializer_class = DemoModelSerializer


class DemoDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = DemoModel.objects.all()
    serializer_class = DemoModelSerializer

路由

在项目级别,demoproject/urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", include("demoapp.urls")),  # new
]

在应用级别,创建文件demoapp/urls.py

from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from demoapp import views

urlpatterns = [
    path("list/", views.DemoList.as_view()),
    path("one/<int:pk>/", views.DemoDetail.as_view()),
]

urlpatterns = format_suffix_patterns(urlpatterns)

这样,我们就可以通过 /list 和 /one/1这样的端口访问Rest API了

可以测试了

python manage.py runserver

可以看到接口返回json数据了。