Tastypie:return html 内容在 API 响应中

Tastypie: return html content in API response

我需要创建一个 API 以 POST 数据中的 application/x-www-form-urlencoded 数据和 returns 一个 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)

我收到以下错误:

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

任何人都可以告诉我这段代码有什么问题以及如何实现给定的要求。

我找到了答案,但不确定在 tastypie 中这样做是否正确:

  1. 通常return来自资源的包响应。

  2. 在urlencodeSerializer中添加如下方法

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