首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Django中不使用模板的情况下返回JSON?

如何在Django中不使用模板的情况下返回JSON?
EN

Stack Overflow用户
提问于 2012-02-13 14:36:20
回答 9查看 123.2K关注 0票数 85

这与这个问题有关:Django return json and html depending on client python

我有一个用于Django应用程序的命令行Python API。当我通过API访问应用程序时,它应该返回JSON,对于浏览器,它应该返回HTML。我可以使用不同的URL来访问不同的版本,但是如何使用一个模板在views.py中呈现HTML模板和JSON呢?

要呈现我将使用的HTML:

代码语言:javascript
运行
AI代码解释
复制
return render_to_response('sample/sample.html....')

但是,如果不放置JSON模板,我如何对JSON执行相同的操作呢?( content-type应该是application/json,而不是text/html)

是什么决定了JSON和HTML输出?

所以在我的views.py

代码语言:javascript
运行
AI代码解释
复制
if something:
    return render_to_response('html_template',.....)
else:
    return HttpReponse(jsondata,mimetype='application/json')
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-02-13 15:57:39

我想你想要什么这个问题已经弄糊涂了。我想您实际上并不是要将HTML放在JSON响应中,而是希望返回HTML或JSON。

首先,您需要了解两者之间的核心区别。HTML是一种表示格式。它更多地处理如何显示数据,而不是数据本身。JSON正好相反。它是纯数据--基本上是您拥有的一些Python (在本例中)数据集的JavaScript表示。它只是一个交换层,允许你将数据从你的应用程序的一个区域(视图)移动到你的应用程序的另一个区域(你的JavaScript),这通常是无法相互访问的。

考虑到这一点,您不必“呈现”JSON,也不涉及任何模板。您只需将正在使用的任何数据(很可能是作为上下文传递给模板的数据)转换为JSON即可。这可以通过Django的JSON库(simplejson) (如果它是自由格式数据)或它的序列化框架(如果它是一个查询集)来完成。

simplejson

代码语言:javascript
运行
AI代码解释
复制
from django.utils import simplejson

some_data_to_dump = {
   'some_var_1': 'foo',
   'some_var_2': 'bar',
}

data = simplejson.dumps(some_data_to_dump)

序列化

代码语言:javascript
运行
AI代码解释
复制
from django.core import serializers

foos = Foo.objects.all()

data = serializers.serialize('json', foos)

无论哪种方式,您都可以将该数据传递到响应中:

代码语言:javascript
运行
AI代码解释
复制
return HttpResponse(data, content_type='application/json')

在Django 1.6和更早版本中编辑,返回响应的代码是

代码语言:javascript
运行
AI代码解释
复制
return HttpResponse(data, mimetype='application/json')

编辑:simplejson was remove from django,您可以使用:

代码语言:javascript
运行
AI代码解释
复制
import json

json.dumps({"foo": "bar"})

或者,您可以使用如上所述的django.core.serializers

票数 138
EN

Stack Overflow用户

发布于 2014-11-04 02:43:28

在Django1.7中,使用内置的JsonResponse更容易做到这一点。

https://docs.djangoproject.com/en/dev/ref/request-response/#jsonresponse-objects

代码语言:javascript
运行
AI代码解释
复制
# import it
from django.http import JsonResponse

def my_view(request):

    # do something with the your data
    data = {}

    # just return a JsonResponse
    return JsonResponse(data)
票数 120
EN

Stack Overflow用户

发布于 2012-02-13 14:39:49

在JSON响应的情况下,不需要呈现模板。模板用于生成HTML响应。JSON是HTTP响应。

但是,您可以使用包含JSON响应的模板来呈现HTML。

代码语言:javascript
运行
AI代码解释
复制
html = render_to_string("some.html", some_dictionary)
serialized_data = simplejson.dumps({"html": html})
return HttpResponse(serialized_data, mimetype="application/json")
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9262278

复制
相关文章
django 返回 json 格式数据
1.返回的格式需要是json数据格式的时候,将content 格式为json对象即可: from django.http import HttpResponse import json def test(request): resp = { 'code': '200', 'message': 'success', 'data': { 'num': '1234', }, } response
onety码生
2018/11/21
2.8K0
如何使用Python中Django模板?
https://www.mattlayman.com/understand-django/templates-user-interfaces/
程序员小猿
2021/01/19
4K0
如何使用Python中Django模板?
Spring在无RedirectAttributes的情况下(如Interceptor中)使用Flash scope
判断逻辑很简单,但是重定向的时候需要前台有消息提示,如果是在Controller中,可以在方法上注入RedirectAttributes参数,但是Interceptor中默认没有这个参数,那么我们如何实现RedirectAttributes的flashMessage功能呢?
飞奔去旅行
2019/06/13
5.5K0
Django 2.1.7 查询数据返回json格式
在日常工作中,对于前端发送过来的请求,后端django大部分都是采用json格式返回,也有采用模板返回视图的方式。 在模板返回视图的方式的确很方便,但是如果涉及到动静分离、ajax请求这类,django就只能返回json格式的数据了。 那么这里就带来了一个问题,如何将django从数据库模型类中查询的数据以json格式放回前端。 然后前端如果获取读取返回过来的数据呢?
Devops海洋的渔夫
2019/09/18
3K0
Django 2.1.7 查询数据返回json格式
Django中的模板相关
1.render_to_string :找到模板,然后将模板编译后渲染成Python的字符串格式。最后再通过 HttpResponse 类包装成一个 HttpResponse 对象返回回去。示例代码如下:
bering
2023/10/16
2210
DTO返回JSON时,不展示某字段;DTO返回JSON时,更改某展示字段的key
//DTO返回JSON时,不展示某字段 @JsonIgnore private String addresses; //DTO返回JSON时,更改某展示字段的key @JsonProperty(value = "addresses") public final CalendarVideoAddressDTO getAddressesJSON() { if (addresses != null) { return JSONObject.pars
qubianzhong
2019/04/22
2.4K0
使用Django的JsonResponse返回数据
urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^show/', views.show_view, name='show') ] 在views.py中创建show_view函数 from django.http import HttpResponse from django.shortcuts import render from .models import * from d
lyudev
2022/08/04
1.2K0
使用Django的JsonResponse返回数据
57. Django 2.1.7 查询数据返回json格式
在日常工作中,对于前端发送过来的请求,后端django大部分都是采用json格式返回,也有采用模板返回视图的方式。
Devops海洋的渔夫
2022/01/17
2.6K0
57. Django 2.1.7 查询数据返回json格式
django模板之的html模板中调用对
解决:由于在python3版本上使用pymysql库,没有MySQLdb库,则需要配置;
py3study
2020/01/08
4.5K0
Flask 使用json或者jsonify返回json响应数据的方法
在前后端分离的时代,后端一般返回前端的数据就是json格式的响应数据。 而json格式的响应数据其实实际上就是一个字符串。
Devops海洋的渔夫
2019/12/02
17.6K0
Django-3 模板使用
在之前的文章中我们了解到模板允许我们在多个地方重用代码段,非常适合动态HTML页面。使用模板将更复杂的HTML返回给浏览器。我们还将看到如何将变量作为上下文传递给模板。接下来开始:
XXXX-user
2019/07/23
9940
Django-3 模板使用
Django:表单字段如何在模板中用中文
1、表单汉化:是针对用户的。用户浏览网页时,表单的名称如果是英文的,不够友好,所以需要显示为中文,虽然代码编写还是英文。 2、Admin后台汉化:是针对网站管理员的。因为Admin后台是数据库直接注册的,所以要想汉化后台内容,其实是对数据库(如字段名)操作的。2种汉化的对象不一样。
py3study
2020/01/16
1.6K0
DevOps如何在不牺牲安全性的情况下迁移到云端
企业采用DevOps意味着开发进行将比以往任何时候都要快。那么如何确保一切都是安全的,尤其是将业务迁移到云端时? 调研机构Gartner公司预测, 2022年全球云计算服务市场规模和增长率几乎是整体I
CloudBest
2019/09/17
6990
DevOps如何在不牺牲安全性的情况下迁移到云端
如何在Java中处理JSON
New 一个 ObjectMapper对象,后续将利用这个ObjectMapper对象来进行一系列的操作。
泰坦HW
2020/07/22
1.6K0
Php如何返回json数据(返回json对象或json格式数据)
header(‘Content-Type:application/json; charset=utf-8’);
超级小可爱
2023/02/20
17.1K0
点击加载更多

相似问题

使用Django模板系统返回JSON响应

11

从Django模板返回JSON

11

Rails模板“扩展”,如Django中的

11

解析模板中django模型集中返回的json

12

使用JSON的Django模板

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文