Django rest framework 使用自定义认证方式

Django rest framework 使用自定义认证方式

Django使用自定义认证方式 介绍了 “Django使用自定义认证方式”,这一篇说说怎样在前一篇的基础上提供rest api。

修改settings.py中INSTALLED_APPS,添加 ‘login’ app。

给login app增加serializers.py文件

#coding:utf-8
from django.contrib.auth.models import User
from rest_framework import serializers

class LoginSerializer(serializers.ModelSerializer):

    username = serializers.CharField(required=False, max_length=1024)
    password = serializers.CharField(required=False, max_length=1024)

    class Meta:
        model = User
        fields = ('id', 'username', 'password')

修改login app的views.py文件

#coding:utf-8
from rest_framework import generics, viewsets, mixins, status
from rest_framework.response import Response
from rest_framework.views import APIView
from .serializers import *


class LoginViewSet(APIView):
    queryset = User.objects.all()
    serializer_class = LoginSerializer

    def post(self, request):
        try:
            username = request.data.get('username')
            password = request.data.get('password')
            user = User.objects.get(username__iexact=username)
            if user.check_password(password):
                print user
                serializer = LoginSerializer({'id': user.id, 'username': user.username})
                return Response(serializer.data)
            return Response(status=status.HTTP_401_UNAUTHORIZED)
        except User.DoesNotExist:
            return Response(status=status.HTTP_401_UNAUTHORIZED)

给login app增加urls.py文件

from django.conf.urls import url, include
from rest_framework import routers
from .views import *

urlpatterns = [
    url(r'^api/login$', LoginViewSet.as_view()),
]

修改project/urls.py文件,添加 ‘login’ app的url配置。

urlpatterns = [
...
    url(r'^login/', include('login.urls')),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
...
]

测试

运行工程,然后访问 http://localhost:8000/login/api/login

转载请以链接形式标明本文地址
本文地址:http://blog.csdn.net/kongxx/article/details/50538938

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值