学习 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

 

posted @ 2020-11-30 22:43  凯宾斯基  阅读(93)  评论(0)    收藏  举报