Django rest framework 使用自定义认证方式
16lz
2021-01-22
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
更多相关文章
- 读取python中的unicode文件,该文件以与python源代码相同的方式声
- python 操作excel 读写同一个文件
- Python csv。读者:我如何返回到文件的顶部?
- 从另一个Python脚本调用Python脚本的最佳方式是什么?
- 使用自定义qemu二进制文件与libvirt失败?
- Python笔记-几种取整方式
- 【python coding 1:网络检测】ping本地文件里的ip地址
- 如何输出NLTK块到文件?
- python 读写文本文件