【问题标题】:django/python reading json?django/python 读取 json?
【发布时间】:2012-09-20 00:34:05
【问题描述】:

我正在尝试学习 django/python,并且正在尝试弄清楚如何读取 json 数据...

我有类似的东西:

{
  region: {
    span: {
       latitude_delta: 0.08762885999999526,
       longitude_delta: 0.044015180000002374
    },
    center: {
       latitude: 37.760948299999995,
       longitude: -122.4174594
    }
  },...
}

我正在尝试读取我的 html 页面中的特定数据。现在这个 json 数据正在显示在 html 页面中。

这个json的来源来自于:

return HttpResponse(json.dumps(response),mimetype="application/json")

我想弄清楚获取特定数据的 django/python 约定?我应该为每个循环做一个吗?我来自一个自学的 php 背景,我正在尝试自学 python/django。

谢谢

编辑:

在返回 HttpResponse 之前我的 view.py 中也有这个

    try:
        conn = urllib2.urlopen(signed_url, None)
        try:
            response = json.loads(conn.read())
        finally:
            conn.close()
    except urllib2.HTTPError, error:
        response = json.loads(error.read())

【问题讨论】:

  • “类似的东西”?这既不是有效的 JSON 也不是 Python...
  • ?这有点令人困惑......您设法使用 json.dumps(response) 创建 json,响应应该是您作为 python 对象的数据。 json.dumps() 将其转换为 json。 json.dumps() 的反义词是 json.loads()
  • @monkut 我编辑了我的帖子。我认为是因为我在返回之前有 json.loads?
  • json.loads() 将给定的 json 数据加载到您可以访问的 python 对象中。您的问题是什么?

标签: python django json django-templates python-2.7


【解决方案1】:

尚不清楚您要循环的内容、位置或方式,但基本循环的工作方式如下:

data = {"key1":[1,2], "key":[4,5]}
for key, values in data.iteritems():
    print key, values

【讨论】:

  • 这会进入我的views.py 下的相同def?例如,如果我所有的代码都在def search(request) 中,我只是想看看我是否应该在.html 文件中循环?或在 view.py 文件中循环?我不知道这对你是否有意义?
  • hmmm...好吧,您可以创建一个循环并在视图中解析对象,或者在模板中循环。我会说通常更容易管理视图中的数据,以便在传递给模板之前将其放入一个干净的结构中。如果您还没有,我建议您先尝试 python 教程,然后再尝试 django 教程。
【解决方案2】:

我通过这个链接找到了解决方案:Decode json and Iterate through items in django template

它帮助了我,希望它能帮助和我有同样问题的其他人。

谢谢

【讨论】:

    【解决方案3】:

    这是在html中读取json的最简单方法(由Django发送)

    def sendJson(request):
        if request.method == 'GET':
            context = {"name":"Json Sample Data"}
            return render_to_response('name.html',context)        
    

    Django 模板 Html 代码

    <div class="col-md-9 center">
        <span class="top-text">{{name}}</span>
    </div>
    

    现在根据你的:

     def sendJson(request):
        if request.method == 'GET':
            jsonData = {
              region: {
               span: {
                latitude_delta: 0.08762885999999526,
                longitude_delta: 0.044015180000002374
              },
              center: {
                latitude: 37.760948299999995,
                longitude: -122.4174594
              }
            }
           }
           data = json.dumps(jsonData)
           return HttpResponse(data, content_type="application/json")
    

    您也可以使用 jquery 读取此数据

    另一个创建json并读取html的例子

    url.py

    url(r'^anotherexample/$', 'views.anotherexample', name="anotherexample"),
    

    view.py

     def anotherexample(request):
        if request.method == 'POST':
           _date = strftime("%c")
           response_data = {}
           response_data['status'] = 'taken'
           response_data['issueTakenTime'] = _date
           return HttpResponse(json.dumps(response_data), content_type="application/json")
    

    HTML 视图和 jquery

    $.ajax({
        url: "/anotherexample/",
        // contentType: "application/json; charset=UTF-8",
        data: { csrfmiddlewaretoken: "{{ csrf_token }}",   // < here 
            status : "taken"
          },
        type: "POST",
        error: function(res) {
          console.log("errr", res)
        },
        success: function(res) {
          console.log("res", res)}
        })
    

    【讨论】:

    • 这和我一直用的一样。
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2014-03-18
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2018-03-04
    相关资源
    最近更新 更多