t01738d384ff1fc3710.jpg

django的django-rest框架基本配置

安装django-rest框架

  1. pip install djangorestframework

django-rest框架的基本配置

再项目的settings.pyINSTALLED_APPS中添加相关配置

  1. INSTALLED_APPS = [
  2. ......
  3. 'rest_framework',
  4. ......
  5. ]

并且进行数据迁移,并且建立超级管理员

  1. python manage.py migrate
  2. python manage.py createsuperuser --email admin@example.com --username admin

在建立的app模块中添加serializers.py文件

  1. #导入在models中建立的模型名称
  2. from django.contrib.auth.models import User, Group
  3. from rest_framework import serializers
  4. #要序列化的项有什么
  5. class UserSerializer(serializers.HyperlinkedModelSerializer):
  6. class Meta:
  7. model = User
  8. fields = ['url', 'username', 'email', 'groups']
  9. #要序列化的项有什么
  10. class GroupSerializer(serializers.HyperlinkedModelSerializer):
  11. class Meta:
  12. model = Group
  13. fields = ['url', 'name']

是的,我们最好再写一些视图。

  1. from django.contrib.auth.models import User, Group #导入在models中建立的模型名称
  2. from rest_framework import viewsets
  3. from rest_framework import permissions
  4. from tutorial.quickstart.serializers import UserSerializer, GroupSerializer # 导入序列化的类
  5. class UserViewSet(viewsets.ModelViewSet):
  6. """
  7. API endpoint that allows users to be viewed or edited.
  8. """
  9. queryset = User.objects.all().order_by('-date_joined')
  10. serializer_class = UserSerializer
  11. permission_classes = [permissions.IsAuthenticated]
  12. class GroupViewSet(viewsets.ModelViewSet):
  13. """
  14. API endpoint that allows groups to be viewed or edited.
  15. """
  16. queryset = Group.objects.all()
  17. serializer_class = GroupSerializer
  18. permission_classes = [permissions.IsAuthenticated]

而不是编写多个视图,我们将所有常见行为分组为,称为类ViewSets
如果需要,我们可以轻松地将它们分解为单个视图,但是使用视图集可以使视图逻辑组织得很好并且非常简洁。


好的,现在让我们连接API URL。继续tutorial/urls.py

  1. from django.urls import include, path
  2. from rest_framework import routers
  3. from tutorial.quickstart import views
  4. router = routers.DefaultRouter()
  5. router.register(r'users', views.UserViewSet)
  6. router.register(r'groups', views.GroupViewSet)
  7. # Wire up our API using automatic URL routing.
  8. # Additionally, we include login URLs for the browsable API.
  9. urlpatterns = [
  10. path('', include(router.urls)),
  11. path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
  12. ]

因为我们使用的是视图集而不是视图,所以我们只需为路由器类注册视图集即可自动为我们的API生成URL conf。
同样,如果我们需要对API URL的更多控制,我们可以简单地使用常规的基于类的视图,并显式编写URL conf。
最后,我们包括用于可浏览API的默认登录和注销视图。这是可选的,但如果您的API需要身份验证并且您想使用可浏览的API,则很有用。