Python 如何使用ajax从外部html向django视图发出经过身份验证的请求

Python 如何使用ajax从外部html向django视图发出经过身份验证的请求,python,ajax,django,html,django-authentication,Python,Ajax,Django,Html,Django Authentication,我正在使用django 1.10,我有以下html页面register.html、login.html、home.html Html页面部署在不同的应用服务器上。我使用的是自定义用户模型, 我可以注册并将详细信息存储到数据库中。还可以验证和登录应用程序,并重定向到主页 问题: 我有一个名为test的示例视图 #viwes.py @login_required def test(request): l=[] l.append('x')

我正在使用django 1.10,我有以下html页面register.html、login.html、home.html

Html页面部署在不同的应用服务器上。我使用的是自定义用户模型, 我可以注册并将详细信息存储到数据库中。还可以验证和登录应用程序,并重定向到主页

问题: 我有一个名为test的示例视图

 #viwes.py
    @login_required
    def test(request):
        l=[]
        l.append('x')
        l.append('y')
        return JsonResponse({"records": l})
所以在登录之后,当我直接访问url时

localhost:8000/app/test
然后我就可以在浏览器中获取数据了。 但在登录后,在同一会话中,当我从home.html调用同一url时,我无法进行身份验证和接收数据。 在浏览器控制台中,它将变为

http://127.0.0.1:8000/accounts/login/?next=/app/test/

有一些帖子将这个解决方案称为@ajax_required,因为我是django的新手,所以我没有找到任何详细的帖子。请任何人用示例解释或建议解决方案。提前谢谢

我已尝试使用以下代码和工作文件

views.py url.py 卷曲
您需要在ajax调用负载中发送
csrf
令牌来识别用户。谢谢vinay kumar。你能举个例子或者重定向到它吗?你是不是用ajax在Django应用程序的同一台服务器上托管html?我们不能在视图函数上使用@login\u required decorator而不是使用LoginRequiredMixin类。如果你使用的是类基视图,那么
@method\u decorator(login\u required)
就可以了。我使用的是基于函数的视图。那么,它是否适用于我在问题中提到的视图?
from django.contrib.auth.decorators import login_required
from django.http.response import JsonResponse
from django.views.generic.base import View

class LoginRequiredMixin(object):
    @classmethod
    def as_view(cls, **initkwargs):
        view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
        return login_required(view)


class TestLogin(LoginRequiredMixin, View):

    def get(self, request, *args, **kwargs):
        l = []
        l.append('x')
        l.append('y')
        return JsonResponse({"records": l})
from django.conf.urls import url
from django.contrib import admin

from myapp.views import TestLogin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^test/$', TestLogin.as_view(), name='testview'),
]
curl -X GET -H "Cookie: csrftoken=t1l5CpH7kL5J48yf0c4C0z9kli3UfI3enCEdT4lH8RGQip1y8f8t1l3ucDWWzRGX,sessionid=99oqphuhy1udboq4pv2icgj408b1lpxi" "http://localhost:8000/test/"