使用者視圖
首先我們先定義登入、注冊、登出、删除四個大類
# 登入
class ActorLogin(APIView):
pass
# 注冊
class ActorRegister(APIView):
pass
# 登出賬号
class ActorPut(generics.GenericAPIView, mixins.UpdateModelMixin):
pass
# 删除賬号
class ActorDelete(generics.GenericAPIView,mixins.DestroyModelMixin):
pass
登入
# 登入
from rest_framework_jwt.settings import api_settings
from rest_framework.views import APIView
from django.contrib.auth import authenticate
class ActorLogin(APIView):
def get(self,request):
#拿到傳入的username
username = request.GET.get('username')
#拿到傳入的password
password = request.GET.get('password')
# 進行認證
user = authenticate(request, username=username, password=password)
if user:
# 登入 jwt驗證
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user)
jwt_token = jwt_encode_handler(payload)
return Response(status=200,data={'jwt':jwt_token})
else:
return Response(status=400)
使用jwt認證時要配置Novels/settings.py
REST_FRAMEWORK = {
#JWT使用者認證
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_jwt.authentication.JSONWebTokenAuthentication',)
}
INSTALLED_APPS=[
....
'rest_framework',
]
注冊
from Database.models import User #導入使用者模型
class ActorRegister(APIView):
# 建立
def post(self, request):
username=request.POST.get('username')
password = request.POST.get('password')
mobile = request.POST.get('mobile')
User.objects.create_user(username=username, password=password,mobile=mobile)
return Response(status=200,data={
'使用者名':username,
'密碼':password,
'手機号':mobile
})
登出
from django.contrib.auth import authenticate, logout
#登出賬号
class ActorPut(generics.GenericAPIView, mixins.UpdateModelMixin):
# 登出
def put(self, request, *args, **kwargs):
logout(request)
return Response(status=200,data='登出成功!')
删除
#删除賬号
class ActorDelete(generics.GenericAPIView,mixins.DestroyModelMixin):
def delete(self, request, *args, **kwargs):
username = request.user
actor = User.objects.filter(username=username)
actor.delete()
return Response(status=200,data='删除成功')
小說視圖
同樣定義四個方法增、删、改、查
定義序列化器 在novelweb下建立一個serializers.py
novelweb/serializers.py
from rest_framework import serializers
from Database.models import Novel
class NovelSerializer(serializers.ModelSerializer):
# 格式化字段
create_time = serializers.DateTimeField(format="%Y-%m-%d", read_only=True)
updata_time = serializers.DateTimeField(format="%Y-%m-%d", read_only=True)
class Meta:
model = Novel
# 顯示所有字段
fields = '__all__'
from rest_framework.viewsets import GenericViewSet
from Database.models import Novel
from novelweb.serializers import NovelSerializer
#這裡運用到了視圖集 下面用法是對應固定的方法
# 小說展示
class NovelInfo(GenericViewSet):
queryset = Novel.objects.all()
# 序列化器
serializer_class = NovelSerializer
#查詢 get
def list(self,request,*args,**kwargs):
pass
#建立 post
def create(self,request,*args,**kwargs):
pass
#删除 delete
def destory(self,request,*args,**kwargs):
pass
#更新 put
def update(self,request,*args,**kwargs):
pass
查詢
#查詢
def list(self,request,*args,**kwargs):
questset=self.queryset
serializer = self.get_serializer(instance=questset, many=True)
return Response(status=200,data=serializer.data)
建立
#建立
def create(self,request,*args,**kwargs):
username = request.user.username
posts = self.get_serializer(data=request.data)
posts.is_valid(raise_exception=True)
posts.save(create_actor=username, updata_actor=username)
return Response(status=200, data=posts.data)
删除
#删除
def destory(self,request,*args,**kwargs):
# 獲得對象
instance = self.get_object()
instance.delete()
deletes = self.get_serializer(instance, data=request.data)
deletes.is_valid(raise_exception=True)
return Response(status=200, data=deletes.data)
更新
#更新
def update(self,request,*args,**kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
serializer.save()
# 擷取傳入的對象
return Response(status=200,data='更新成功!')
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLxUDN0ETN1YTMyIzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
看完點個贊吧,喜歡的可以點個關注!