2013-08-16 10 views
11

एचटीएमएल के किसी भी अनुरोध के लिए django restframework प्रतिक्रिया कैसे पास करें। उदाहरण: ऑब्जेक्ट्स वाली एक सूची, और HTML articles.html हो।एचटीएमएल के लिए django आराम ढांचे प्रतिक्रिया कैसे पास करें?

मैं बाकी ढांचे प्रतिक्रिया का उपयोग करके की कोशिश की:

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

मैं इस त्रुटि हो रही है:

""" AssertionError at /articles/ 

.accepted_renderer not set on Response """ 

कहाँ मैं गलत हो गया था, कृपया मुझे सुझाव देते हैं।

+0

http://django-rest-framework.org/api-guide/renderers.html HTML रेंडरर – Denis

+0

ऊपर दिया गया लिंक काम नहीं करता है के लिए देखो, लेकिन यह एक होना चाहिए: http: //www.django -rest-framework.org/api-guide/renderers/ – rschwieb

उत्तर

33

यदि यह एक समारोह आधारित दृश्य है, आप ठीक ढंग से प्रदर्शित करने के लिए एक @api_view डेकोरेटर उपयोग करने की आवश्यकता किए। मैंने देखा है कि इस सटीक कारण के लिए यह विशेष त्रुटि होती है (फ़ंक्शन आधारित दृश्यों में अनुपलब्ध एपीआई व्यू घोषणा)।

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

आप TemplateHTMLRenderer डेकोरेटर याद किया:

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

मैं टाइप टाइपर प्राप्त करता रहता हूं: JSON serializable नहीं है। जैसा कि आप सुझाव देते हैं, सब ठीक वैसे ही प्रतीत होता है। – Bobort

5

मेरे मामले में बस ([ 'डाल']) दृश्य समारोह पर @api_view स्थापित करने के लिए भूल गया था।

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.

संबंधित मुद्दे