初始化应用
创建一个名为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/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数据了。