如何使用ajax

时间:2017-02-24 14:56:11

标签: python ajax django html5 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')
        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的新手,我没有详细找到任何帖子。任何人都可以用示例来解释或建议解决方案。提前致谢。

1 个答案:

答案 0 :(得分:0)

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

views.py

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})

urls.py

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/"