django - 如何通过从 API 获取数据来登录用户?
问题描述
我正在编写一个 API 视图,其中正在访问 API 以将电子邮件和密码发送到地址并获取响应。所以我想要如果响应为 200 或回复消息为“成功”,然后使用可用的电子邮件和密码数据登录,但我是不能这样做。如何做到这一点?
class ApiLoginView(TemplateView):
template_name = 'index.html'
def post(self,request):
email = request.POST.get('login-email')
print(email)
password = request.POST.get('login-password')
print(password)
API_KEY = '*********************'
API_URL = 'http://devstudio.com/rest/storeLogin'
parameter = {
'authToken':API_KEY,
'email':email,
'password':password,
}
r = session.post(url = API_URL, params=parameter)
return HttpResponse(r)
解决方案
如果您使用 djagno 的内置身份验证和用户系统,那么您可以使用类似这样的东西
from django.contrib.auth import authenticate, login
class ApiLoginView(TemplateView):
template_name = 'index.html'
def post(self,request):
email = request.POST.get('login-email')
print(email)
password = request.POST.get('login-password')
print(password)
API_KEY = '*********************'
API_URL = 'http://devstudio.com/rest/storeLogin'
parameter = {
'authToken':API_KEY,
'email':email,
'password':password,
}
r = session.post(url = API_URL, params=parameter)
if r.status_code==200:
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
else:
# Return an 'invalid login' error message.
return HttpResponse(r)
作为参考,请检查此https://docs.djangoproject.com/en/2.1/topics/auth/default/#topic-authorization 希望这会有所帮助..
推荐阅读
- system-verilog - 如何在 SystemVerilog 中正确声明 N 维队列内联?
- nightwatch.js - 在每个测试的基础上设置默认超时
- javascript - 调用 load() 时,loadeddata 和其他事件没有被触发
- angular - 如何使用在另一个模块中定义的路由
- windows - SHParseDisplayName 绝对 pidl 输出构建
- javascript - 在jquery中唯一地计算表的每一行
- php - 如何在我的 show.blade.php 上打印此查询结果?
- rundeck - 通知作业日期格式
- c++ - 最大对积奇怪的结果
- ruby-on-rails - 在 has_many 中使用 `class_name` 时,Rails 自定义 ActiveRecord::Type 失败:通过关联