Python 无法使用Django身份验证
我收到这个错误:Python 无法使用Django身份验证,python,django,Python,Django,我收到这个错误: TypeError at /auth/ authenticate() missing 1 required positional argument: 'request' 我正在使用Django和Django Rest框架 HTTP POST如下所示: { "username": "HelloUser", "password": "Hello123" } 查看 @csrf_exempt @api_view(['POST']) def authenticate(
TypeError at /auth/
authenticate() missing 1 required positional argument: 'request'
我正在使用Django和Django Rest框架
HTTP POST如下所示:
{
"username": "HelloUser",
"password": "Hello123"
}
查看
@csrf_exempt
@api_view(['POST'])
def authenticate(self, request):
print(request.data)
user = authenticate(username=request.data['username'], password=request.data['password'])
if user is not None:
return Response({'Status': 'Authenticated'})
else:
return Response({'Status': 'Unauthenticated'})
from django.contrib.auth import authenticate
@csrf_exempt
@api_view(['POST'])
def authenticate_user(request):
print(request.data)
user = authenticate(username=request.data['username'], password=request.data['password'])
if user is not None:
return Response({'Status': 'Authenticated'})
else:
return Response({'Status': 'Unauthenticated'})
URL
urlpatterns = [
url(r'^', include(router.urls)),
url(r'create/', views.create),
url(r'retrieve/', views.retrieve),
url(r'auth/', views.authenticate),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
urlpatterns = [
url(r'^', include(router.urls)),
url(r'create/', views.create),
url(r'retrieve/', views.retrieve),
url(r'auth/', views.authenticate_user),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
首先,您不应该将视图的名称用作authenticate,因为它与Django auth的authenticate混合在一起 第二,您不需要身份验证视图中的self参数,即def authenticate\u用户(请求) 按如下方式更新代码:
{
"username": "HelloUser",
"password": "Hello123"
}
查看
@csrf_exempt
@api_view(['POST'])
def authenticate(self, request):
print(request.data)
user = authenticate(username=request.data['username'], password=request.data['password'])
if user is not None:
return Response({'Status': 'Authenticated'})
else:
return Response({'Status': 'Unauthenticated'})
from django.contrib.auth import authenticate
@csrf_exempt
@api_view(['POST'])
def authenticate_user(request):
print(request.data)
user = authenticate(username=request.data['username'], password=request.data['password'])
if user is not None:
return Response({'Status': 'Authenticated'})
else:
return Response({'Status': 'Unauthenticated'})
并且您的URL.py将根据视图的名称进行更新:
URL
urlpatterns = [
url(r'^', include(router.urls)),
url(r'create/', views.create),
url(r'retrieve/', views.retrieve),
url(r'auth/', views.authenticate),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
urlpatterns = [
url(r'^', include(router.urls)),
url(r'create/', views.create),
url(r'retrieve/', views.retrieve),
url(r'auth/', views.authenticate_user),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]