我正在关注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)
答案 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()),