使用 angular $http 和 django urlpatterns 来获取 json 文件
Posted
技术标签:
【中文标题】使用 angular $http 和 django urlpatterns 来获取 json 文件【英文标题】:use angular $http with django urlpatterns to get a json file 【发布时间】:2015-05-28 06:56:10 【问题描述】:我想要做的是向 django url 模式发送一个 $http GET 请求并返回一个 .json 文件。我可以使用 urlpatterns 来返回文件而不是视图吗?
这甚至可能吗?
当前表单/数据返回 500
testModule.js
angular.module('mod1', ['mod2'])
.controller('resorcesCtrl', ['mod2Factory',
function(mod2Factory)
mod2Factory.getJSON();
]);
angular.module('mod2', [])
.factory('mod2Factory', [ '$http',
function($http)
var getJSON = function()
return $http(
url: "/form/data",
method: "GET"
)
return
getJSON:getJSON
;
])
urls.py
url(r'^form/data', 'myApp.views.getJSON', name='getJSON'),
views.py
def getJSON(request):
context =
"json": json
return render(request, '', context)
【问题讨论】:
您的 500 错误的内容是什么?你能把它和堆栈跟踪一起放在这里吗?哪个版本的 Django? 【参考方案1】:从 Django 1.7 开始,有一个名为 JsonResponse 的新响应对象。
你的观点可以很简单:
from django.http import JsonResponse
def getJSON(request):
# context is a Python dict.
context =
"key": "value",
"other_key": 365,
return JsonResponse(context)
context
必须是有效的 JSON 可序列化对象。有关JsonResponse
的更多详细信息,请参阅the docs。如果您在序列化方面遇到任何问题,可以将自己的编码器传递给JsonResponse
来处理自定义数据类型,read more。
【讨论】:
【参考方案2】:我更喜欢使用这样的功能
import json
from django.http import HttpResponse
def json_responder(**kwargs):
return HttpResponse(json.dumps(kwargs), content_type="application/json")
def yourview(request):
return json_responder(type='error', msg='a message")
并且可以在每个 django 版本上使用
【讨论】:
以上是关于使用 angular $http 和 django urlpatterns 来获取 json 文件的主要内容,如果未能解决你的问题,请参考以下文章
Django + Angular:如何将 angularjs $http 数据或参数发送到 django 并在 django 中解释?
Django:如何在 Jquery 中使用 $getJSON 或在 Angular.js 中使用 $http.get 接收 QuerySet?
在 Django CSRF 保护中使用 angular2 http 请求的正确方法是啥?