无需重定向的Django AJAX登录

时间:2019-06-03 19:06:39

标签: django

是的,有一个similar question没有解决实际问题。

我的用户可能正在试用该应用程序,然后决定注册要保存的帐户。注册后,我需要登录它们而无需重定向或重新加载页面。我已经完成了注册工作,并且可以登录,但是为了使登录的会话在浏览器中处于活动状态,我该如何返回客户端呢?我不想在堆栈中添加任何其他框架或库。

Django视图(有些省略了)

class CheckAuthTokenAjaxView(FormView):

    form_class = AuthTokenForm

    def post(self, *args, **kwargs):
        form = self.form_class(self.request.POST)

        u = get_user_model().objects.filter(email=email).first()
        u.email_confirmed = True
        u.save()

        login(self.request, u)

        # What should I be sending back?
        return JsonResponse({"success": True}, status=200)

JS

Doc.Register.checkAuthTokenForm = function(event) {
    event.preventDefault();

    var form = document.getElementById('authtoken-form');
    var data = new FormData(form);

    d3.json('/users/ajax/checkAuthToken/', {
        method: 'post',
        body: data,
        headers: {
            // "Content-type": "charset=UTF-8",
            "X-CSRFToken": Doc.CSRF,
        }
    })
    .then(result => {
        if (result.hasOwnProperty('errors')) {
            // ...
        } else {
            // WHAT DO I DO HERE?
        }
    });
}

0 个答案:

没有答案