学习 rest framework
就是个为django为设置的 接口文档吧? 貌似不是
接着看看 这个 https://www.bilibili.com/video/BV1XR4y157rk?spm_id_from=333.337.search-card.all.click&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea (这个也不错 要看完)
https://www.bilibili.com/video/BV1z5411D7BQ?spm_id_from=333.337.search-card.all.click&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea (这个老师说他1教不会给100块) (看完--偏向源码分析)
安装库
pip3 install djangorestframework
创建项目和应用
django-admin startproject django_test
cd django_test
python3 manage.py startapp api
目录结构

settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', #加这个应用
'api', #加这个应用
]
#在文件末尾加
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',), 'PAGE_SIZE': 10 }
命令执行
python3 manage.py migrate
//创建超级管理员
python3 manage.py createsuperuser
在api应用下创建 创建数据序列化serializers.py文件
from django.contrib.auth.models import User, Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
serializers用于定义API的表现形式,如返回那些字段、返回怎么样的格式等。这里序列化Django自带的User和Group
api应用下的views.py文件
from django.shortcuts import render
# Create your views here.
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from api.serializers import UserSerializer, GroupSerializer
# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
""" API endpoint that allows users to be viewed or edited. """
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
""" API endpoint that allows groups to be viewed or edited. """
queryset = Group.objects.all()
serializer_class = GroupSerializer
urls.py
from django.conf.urls import include
from django.urls import re_path as url
from django.urls import path
from django.contrib import admin
from rest_framework import routers
from api import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
from django.conf.urls import include
from django.urls import re_path as url
from django.urls import path
from django.contrib import admin
from rest_framework import routers
from api import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
启动项目
python3 manage.py runserver


浙公网安备 33010602011771号