2015-04-23 28 views
0

我需要创建一个API,它将采用POST数据中的application/x-www-form-urlencoded数据并返回HTML内容作为响应。Tastypie:在API响应中返回html内容

现在序列化urlencoded的数据我打电话从资源以下串行:

class urlencodeSerializer(Serializer): 
formats = ['json', 'jsonp', 'xml', 'yaml', 'html', 'plist', 'urlencode'] 
content_types = { 
    'json': 'application/json', 
    'jsonp': 'text/javascript', 
    'xml': 'application/xml', 
    'yaml': 'text/yaml', 
    'html': 'text/html', 
    'plist': 'application/x-plist', 
    'urlencode': 'application/x-www-form-urlencoded', 
    } 
def from_urlencode(self, data,options=None): 
    """ handles basic formencoded url posts """ 
    qs = dict((k, v if len(v)>1 else v[0]) 
    for k, v in urlparse.parse_qs(data).iteritems()) 
    return qs 

def to_urlencode(self,content): 
    pass 

要指定我已经添加在资源此功能的响应格式:

def determine_format(self, request): 
     return 'text/html' 

现在,当我试图输出如下HTML响应:

data = "<html><h1>Hello</h1></html>" 
return HttpResponse(data, content_type='text/html', status=200) 

I我得到以下错误:

Sorry, not implemented yet. Please append "?format=json" to your URL. 

有人可以建议我这个代码有什么问题,以及如何实现给定的要求。

+0

  • 添加下面的方法你试图启用HTML只是整个系统的一个资源? – Railslide

  • +0

    @Railslide只为一个资源 –

    回答

    0

    我已经找到了答案,虽然不知道它的正确方式tastypie做到:

    1. 正常返回从资源捆绑包响应。在urlencodeSerializer

      def to_html(self,bundle, options): 
          return prepare_html_from_bundle_data(bundle.data)