python - "detail": "方法 \"POST\" 不允许。"
问题描述
在这里,我尝试在 djangorestfulapi 中使用自定义用户登录,但我收到错误“详细信息”:“方法 \"POST\" 不允许。” . 任何人都可以解释我哪里错了吗?
class LoginAPIView(APIView):
def user_login(self,request,format=None):
# context = RequestContext(request)
if request.method == 'POST':
user = ''' SELECT * FROM users '''
# Gather the username and password provided by the user.
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
print("auth",str(authenticate(username=username, password=password)))
if user:
# Is the account active? It could have been disabled.
if user.is_active:
login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse("xxx")
else:
# Bad login details were provided. So we can't log the user in.
print ("Invalid login details: {0}, {1}".format(username, password))
return HttpResponse("Invalid login details supplied.")
端点网址:
path('api/login/',LoginAPIView.as_view(), name='login'),
解决方案
在基于类的视图中,您应该像这样为单独的 http 方法定义单独的方法
class LoginAPIView(APIView):
def post(self,request,format=None):
user = ''' SELECT * FROM users '''
# Gather the username and password provided by the user.
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
print("auth",str(authenticate(username=username, password=password)))
if user:
# Is the account active? It could have been disabled.
if user.is_active:
login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse("xxx")
推荐阅读
- google-sheets - 从以逗号分隔的列中获取值的计数
- amazon-web-services - 从 Lambda 连接到 ASW Cognito 时超时
- spark-ar-studio - 如何在 Instagram 效果中添加嵌入提及?
- ruby-on-rails - 使用 Audited gem 在 Rails 5.2 应用程序中在哪里列出未审核的列?
- excel - 动态获取excel中的总金额
- html - Ar.js 在户外识别标记的问题 - 对比度/亮度
- javascript - 为什么我需要每隔一天将我的 IP 列入白名单
- javascript - 是否可以使用 pbkdf2.pbkdf2Sync() 函数的散列结果和 salt 参数取回原始密码?
- java - 将 TYPE_INT_RGB 转换为 TYPE_BYTE_GRAY 图像会产生错误的结果
- c++ - 用于通用和元编程的 C++11 功能