Source Analysis: Three certified components package
Component authentication configuration:
Model layer: models.py
class User(BaseModel): username = models.CharField(verbose_name='用户名', max_length=32) password = models.CharField(verbose_name='密码', max_length=64) class Car(BaseModel): name = models.CharField(verbose_name='汽车品牌', max_length=32) price = models.DecimalField(verbose_name='价格', max_digits=11, decimal_places=2, default=1.00)
Layer sequence: serializer.py
from rest_framework import serializers from . import models class UsersModelSerializer(serializers.ModelSerializer): class Meta: model = models.User fields = ('username', 'password') extra_kwargs = {} class CarsModelSerializer(serializers.ModelSerializer): class Meta: model = models.Car fields = ('name', 'price') extra_kwargs = {}
Routing layer: urls, .py
from django.conf.urls import url, include from . import views urlpatterns = [ url(r'^users/(?P<pk>\d+)/', views.UsersRetrieveAPIView.as_view()), url(r'^cars/$', views.CarsGenericViewSet.as_view({'get': 'list'})), url(r'^cars/(?P<pk>\d+)/', views.CarsGenericViewSet.as_view({'get': 'retrieve'})), ]
View layer: views.py
from rest_framework Import generics, viewsets, as mixins from . Import Models, serializers # partial disabled: view class field may complete local control authentication_classes class UsersRetrieveAPIView (generics.RetrieveAPIView): # local deauthentication authentication_classes = () QuerySet = models.User.objects .filter (is_delete = False) serializer_class = serializers.UsersModelSerializer from . Import authentication class CarsGenericViewSet (mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet): # 局部完成禁用 authentication_classes = (authentication.TokenAuthentication, ) queryset = models.Car.objects.filter(is_delete=False) serializer_class = serializers.CarsModelSerializer