如何使用django rest返回json并从浏览器中查看它

时间:2015-04-08 17:23:08

标签: django django-views django-rest-framework

我正在关注django休息教程,我认为我的观点不正确。我要做的就是返回JSON中Entry类的所有对象,并让它在浏览器中可见。目前,当我去api /店面时,我收到500错误。

views.py

@api_view(['GET', 'POST'])
def EntryAPI(request):
    snippets = Entry.objects.all()
    serializer = EntrySerializer(snippets, many=True)
    return Response(serializer.data)

urls.py

urlpatterns = patterns('',
    (r'^api/storefront/$', EntryAPI),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

下面的方法返回Entry类的所有记录,所以我不确定为什么Django休息的东西不是这样做的,或者为什么我得到500错误。此外,我已经确认我的serializers.py和models.py不是问题。

def storefront(request):
    if request.user.is_authenticated():
        latest_entries = Entry.objects.all()
        context = {'latest_entries': latest_entries}
    return render(request, 'storefront.html', context)

1 个答案:

答案 0 :(得分:4)

我通常更喜欢使用基于类的视图,在学习阶段,当我没有在我的网址中使用as_view()(用于CSRF保护)时,我遇到了500错误。

url('^login/$', views.LoginView.as_view())

哪个不能在基于功能的视图中完成。为什么不在你的函数之上使用@csrf_exempt,如下所示。

@api_view(['GET', 'POST'])
@csrf_exempt
def EntryAPI(request):
    snippets = Entry.objects.all()
    serializer = EntrySerializer(snippets, many=True)
    return Response(serializer.data)

或者您应该在urls.py中尝试(r'^api/storefront/$', EntryAPI.as_view()),