如何在基于Django类的视图中通过mime类型区分响应
How to distinguish responses by mime-type in Django class-based view?
在基于类的视图中,我可以为GET
或POST
定义方法。我能为不同的mime类型的响应定义一些特殊的方法吗?
用例是-即使JS关闭,也要使AJAX站点可用。
import json
from django.http import HttpResponse
from django.views.generic.edit import CreateView
from myapp.models import Author
class AjaxableResponseMixin(object):
"""
Mixin to add AJAX support to a form.
Must be used with an object-based FormView (e.g. CreateView)
"""
def render_to_json_response(self, context, **response_kwargs):
data = json.dumps(context)
response_kwargs['content_type'] = 'application/json'
return HttpResponse(data, **response_kwargs)
def form_invalid(self, form):
response = super(AjaxableResponseMixin, self).form_invalid(form)
if self.request.is_ajax():
return self.render_to_json_response(form.errors, status=400)
else:
return response
def form_valid(self, form):
# We make sure to call the parent's form_valid() method because
# it might do some processing (in the case of CreateView, it will
# call form.save() for example).
response = super(AjaxableResponseMixin, self).form_valid(form)
if self.request.is_ajax():
data = {
'pk': self.object.pk,
}
return self.render_to_json_response(data)
else:
return response
class AuthorCreate(AjaxableResponseMixin, CreateView):
model = Author
fields = ['name']
请从文档中查看此示例:https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-editing/#ajax-示例
有两种情况:表格是否有效。从那里我们有两种情况:请求是否基于AJAX(request.is_axx)
相关文章:
- 如何通过JavaScript了解当前加载页面的mime类型或内容类型
- EventSource 的响应具有非“文本/事件流”的 MIME 类型(“文本/纯文本”)
- Node js:如何获取文件签名标头而不是 mime 类型
- 如何在 Node.js 中发送文件之前设置 MIME 类型
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- 资源被解释为脚本,但使用MIME类型text/plain传输
- 找不到 IE8 MIME 类型应用程序/json
- Safari-->"应用程序缓存清单的MIME类型不正确:text/plain&”;
- 我应该对 JavaScript 源映射文件使用哪种 MIME 类型
- Internet Explorer mimeType 始终为空,并且无法在此浏览器中获取支持的 MIME 类型
- 如何在一个 Http 响应中将多个 mime 类型返回到 Web 客户端
- 如何解决“资源解释为脚本但使用 MIME 类型文本/html 传输”
- 在Codeigniter中上传ajax上的奇怪MIME类型
- Javascript:如何从HTML文件输入中获取.tgz MIME类型
- FineUploader 和 Mime 类型(------WebKitFormBoundary) 附加到文件中
- 在 Tomcat 中更改 .xml.gz 的 mime 类型
- 请求的内容类型标头包含的不仅仅是 MIME 类型,为什么
- 在该应用程序上运行SortSite时,此IMG链接到图像的MIME类型错误的文件
- $.ajax表单使用JSONP提交给Google文档:“;被解释为脚本但用MIME类型text/html传输的资源”;
- 资源被解释为图像,但使用MIME类型的应用程序/八位字节流传输