天天看點

Django架構的運用三(使用者視圖與小說視圖)使用者視圖小說視圖

使用者視圖

首先我們先定義登入、注冊、登出、删除四個大類

# 登入
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='更新成功!')
           
Django架構的運用三(使用者視圖與小說視圖)使用者視圖小說視圖

看完點個贊吧,喜歡的可以點個關注!