2013-08-16 37 views
11

Cách chuyển trả lời phản hồi django cho bất kỳ yêu cầu nào đối với html. Ví dụ: Danh sách chứa đối tượng và html là articles.html.Làm thế nào để vượt qua phản ứng khung còn lại django để html?

tôi đã cố gắng bằng cách sử dụng ứng phó khuôn khổ còn lại:

data= {'articles': Article.objects.all() } 
return Response(data, template_name='articles.html') 

Tôi nhận được lỗi này:

""" AssertionError at /articles/ 

.accepted_renderer not set on Response """ 

đâu tôi đã đi sai, tôi xin đề nghị.

+0

http://django-rest-framework.org/api-guide/renderers.html Tìm mã HTML Renderer – Denis

+0

Liên kết ở trên không hoạt động, nhưng điều này nên: http: //www.django -rest-framework.org/api-guide/renderers/ – rschwieb

Trả lời

33

Nếu đó là một quan điểm chức năng dựa, bạn đã cần phải sử dụng một nhà thiết @api_view để hiển thị đúng. Tôi đã thấy lỗi cụ thể này xảy ra vì lý do chính xác này (thiếu tuyên bố Xem API trong chế độ xem dựa trên chức năng).

from rest_framework.decorators import api_view 
# .... 

@api_view(['GET', 'POST', ]) 
def articles(request, format=None): 
    data= {'articles': Article.objects.all() } 
    return Response(data, template_name='articles.html') 
1

Bạn bỏ lỡ TemplateHTMLRenderer trang trí:

 
@api_view(('GET',)) 
@renderer_classes((TemplateHTMLRenderer,)) 
def articles(request, format=None): 
    data= {'articles': Article.objects.all() } 
    return Response(data, template_name='articles.html') 
+0

Tôi tiếp tục nhận được một TypeError: không phải là JSON serializable. Mọi thứ dường như chính xác như bạn đề nghị. – Bobort

5

Trong trường hợp của tôi chỉ quên để thiết lập @api_view ([ 'PUT']) trên quan điểm chức năng.

So,
.accepted_renderer
The renderer instance that will be used to render the response not set for view.
Set automatically by the APIView or @api_view immediately before the response is returned from the view.

Các vấn đề liên quan