首页 > 解决方案 > 在django模板中将json字符串转换为日期时间格式dd/mm/yyyy

问题描述

使用 json.loads 获取数据并在 django 模板上显示后,它给出了这些结果

Contract                   Name               Debt    Createat
20150307-500000-0009       AAA                   2   2020-12-13T14:25:35Z
20170221-0007429           BBB                   3   2020-12-13T14:25:35Z

我尝试将 createat 列上的日期时间转换为 dd/mm/yyyy,就像这样

Contract                   Name               Debt    Createat
20150307-500000-0009       AAA                   2   13/12/2020
20170221-0007429           BBB                   3   13/12/2020

在我看来

        contract_posts = serializers.serialize('json', Contracts.objects.all())
        contract_posts = json.loads(contract_posts)
        request.session['contract_posts'] = contract_posts
        context = {'contract_posts': contract_posts}
        return render(request, 'customer2.html', context)

在我的模板中

          {% for contract in contract_posts%}
            <tr>
              <td>{{ contract.fields.contract }}</td>
              <td>{{ contract.fields.name }}</td>
              <td>{{ contract.fields.debt }}</td>
              <td>{{ contract.fields.created_at}}
            </tr>
          {% endfor %}

我试试

<td>{{ contract.fields.created_at|date:"d m Y"}}

或者

<td>{{ contract.fields.created_at|date:"SHORT_DATE_FORMAT"}}

但它只是在结果中显示空单元格

Contract                   Name               Debt    Createat
20150307-500000-0009       AAA                   2    
20170221-0007429           BBB                   3   

我在 model.py 中的代码

created_at=models.DateTimeField(auto_now_add=True,blank=True)
updated_at=models.DateTimeField(auto_now_add=True,blank=True)
objects=models.Manager()
class Meta:
    ordering=["-created_at"]

标签: jsondjangotemplatesviewdjango-templates

解决方案


建议发送并在视图上下文json data中发送。所以很容易应用 django 过滤器:request.sessionquery data

视图.py

contract_posts = serializers.serialize('json', Contracts.objects.all())
c_p = json.loads(contract_posts)
request.session['contract_posts'] = c_p
context = {'contract_posts': contract_posts}
return render(request, 'customer2.html', context)

模板

{% for contract in contract_posts %}
    <tr>
      <td>{{ contract.contract }}</td>
      <td>{{ contract.name }}</td>
      <td>{{ contract.debt }}</td>
      <td>{{ contract.created_at|date:"d m Y"}}
    </tr>
{% endfor %}

推荐阅读