pau*_*bin 1 python django django-rest-framework
这是我使用rest_framwork 视图集的视图。我是这方面的初学者请帮忙。
这些是我的序列化器类。
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
from . import models
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'password')
extra_kwargs = {'password': {'write_only': True, 'required': True}}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
Token.objects.create(user=user)
return user
class ToDoSerializer(serializers.ModelSerializer):
class Meta:
model = models.ToDo
fields = ('id', 'user', 'title', 'date')
Run Code Online (Sandbox Code Playgroud)
这些是我的视图集类。
from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework import viewsets
from . import serializers, models
from rest_framework.authentication import TokenAuthentication
# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = serializers.UserSerializer
permission_classes = (AllowAny, )
class ToDoViewSet(viewsets.ModelViewSet):
queryset = models.ToDo.objects.all()
serializer_class = serializers.ToDoSerializer
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated, )
Run Code Online (Sandbox Code Playgroud)
我不太明白如何根据当前登录的用户进行过滤。
尝试这个
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = serializers.UserSerializer
permission_classes = (AllowAny, )
def get_queryset(self): # added string
return super().get_queryset().filter(id=self.request.user.id) # added string
class ToDoViewSet(viewsets.ModelViewSet):
queryset = models.ToDo.objects.all()
serializer_class = serializers.ToDoSerializer
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated, )
def get_queryset(self): # added string
return super().get_queryset().filter(user=self.request.user) # added string
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |