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 中这样做是否正确:
通常return来自资源的包响应。
在urlencodeSerializer中添加如下方法
def to_html(self,bundle, options):
return prepare_html_from_bundle_data(bundle.data)
我需要创建一个 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 中这样做是否正确:
通常return来自资源的包响应。
在urlencodeSerializer中添加如下方法
def to_html(self,bundle, options): return prepare_html_from_bundle_data(bundle.data)