我正在使用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的新手,我没有详细找到任何帖子。任何人都可以用示例来解释或建议解决方案。提前致谢。
答案 0 :(得分:0)
我尝试使用以下代码和工作文件
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/"