Django Restframework.2

时间:2019-06-08 15:40:50   收藏:0   阅读:92

APIView

generics

mixins

用法(简单的注册登陆)

class User(models.Model):

    u_name = models.CharField(max_length=32, unique=True)
    u_password = models.CharField(max_length=256)

    @classmethod
    def get_user(cls, u_name):
        try:
            user = User.objects.get(u_name=u_name)
            return user
        except Exception as e:
            print(e)

    def check_password(self, password):
        return self.u_password == password
class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ("id", "u_name", "u_password")

 

urlpatterns = [
    url(r^users/, views.UsersAPIView.as_view()),
]
class UsersAPIView(CreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def post(self, request, *args, **kwargs):
        action = request.query_params.get("action")

        if action == "register":
            return self.do_register(request, *args, **kwargs)
        elif action == "login":
            return self.do_login(request, *args, **kwargs)
        else:
            raise APIException(detail="please supply correct action [register, login]")

    def do_register(self, request, *args, **kwargs):

        print(type(request))
        print(type(self))

        return self.create(request, *args, **kwargs)

    def do_login(self, request, *args, **kwargs):
        u_name = request.data.get("u_name")
        u_password = request.data.get("u_password")

        user = User.get_user(u_name)

        if not user:
            raise APIException(detail="用户不存在")

        if not user.check_password(u_password):
            raise APIException(detail="密码错误")

        token = uuid.uuid4().hex

        # 存token

        data = {
            "msg": "ok",
            "status": HTTP_200_OK,
            "token": token
        }

        return Response(data)

 

原文:https://www.cnblogs.com/zbcdamao/p/10990749.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!