设置:
django==1.8
django-tastypie==0.13
django-axes==2.3
我通过 tastypie 获得了登录资源,如下所示
from django.contrib.auth import login
class LoginResource(Resource):
class Meta:
resource_name = 'login'
allowed_methods = ['post']
def obj_create(self, bundle, **kwargs):
form = AuthForm(data=bundle.data)
if form.is_valid():
request.session.set_expiry(0)
if form.get_user():
login(bundle.request, form.get_user())
raise ImmediateHttpResponse(response=HttpResponse(status=200))
raise ImmediateHttpResponse(response=http.HttpBadRequest(status=400))
我不知道如何在 django-axes 中记录这些登录尝试。
最佳答案
接下来是我自己的解决方案:我在 views.py
中编写自定义登录 View
from django.contrib.auth.views import login
def core_login(request, *args, **kwargs):
kwargs["authentication_form"] = AuthForm
return login(request, *args, **kwargs)
在 Tastypie 资源中:
from core.views import core_login
class LoginResource(Resource):
class Meta:
resource_name = 'login'
allowed_methods = ['post']
def obj_create(self, bundle, **kwargs):
bundle.request.POST = bundle.data
if core_login(bundle.request).status_code == 302:
raise ImmediateHttpResponse(response=HttpResponse(status=200))
raise ImmediateHttpResponse(response=http.HttpBadRequest(status=400))
关于python - 如何将 django-tastypie 与 django-axes 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195900/