from django.shortcuts import render, HttpResponse
from django.contrib.auth.models import User
from app_models.models import UserExtra
from .serializers import UserSerializer, UserExtraSerializer
from rest_framework import viewsets
from rest_framework import views as rest_views
from rest_framework.response import Response
# Create your views here.
[文档]def alive(request):
return HttpResponse('---> /app_drf/alive/')
[文档]class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
from rest_framework import serializers
### 上面的的因为是 DRF的ViewSet,所以可以用router注册
### 以下因为是APIView,需要在本地的urls中,用FeiView.as_view()来显示响应,不能用router注册
[文档]class FeiUserSerializer(serializers.ModelSerializer):
[文档]class FeiView(rest_views.APIView):
"""成功显示了两个models, User , UserExtra
"""
[文档] def get(self, request, pk, format=None, **kwargs):
user = User.objects.get(id=pk)
user_serializer = FeiUserSerializer(instance=user)
userextra = UserExtra.objects.get(id=pk)
userextra_serializer = FeiUserExtraSerializer(instance=userextra)
print(f'===> {user.__dict__} / {userextra.__dict__}')
print(f'---> {user_serializer.data} / {userextra_serializer.data}')
print(f'--- {user_serializer.__dict__}')
return Response({
'user': user_serializer.data,
'userextra': userextra_serializer.data})
from rest_framework.decorators import api_view
[文档]@api_view()
def send_json(request):
return Response({"key1": "value1"})
# Use ViewSet instead of APIView (FeiView)
[文档]class FeiViewSet(viewsets.ViewSet):
[文档] def list(self, request, format=None, **kwargs):
user = User.objects.all().order_by('id')
userextra = UserExtra.objects.order_by('id')
user_serializer = FeiUserSerializer(user, many=True)
userextra_serializer = FeiUserExtraSerializer(userextra, many=True)
return Response({
'user': user_serializer.data,
'userextra': userextra_serializer.data
})