我有一个API,在我的一个模板中填充了一些数据。日期的输出是"2019-08-30T08:22:32.245-0700",如何才能像DD/MM/YY一样读取日期?
我尝试过一些模板date:类型的东西,类似于您对Jekyll所做的操作,但是没有任何效果。
我就是这样从API响应中显示它的。
<td class="text-center">{{ ticket.fields.updated }}</td>
我试过这样的方法:
<td class="text-center">{{ ticket.fields.updated | date: "Y,D,M " }}</td>
试着:
class PostDetailView(DetailView):
'''
This view will hold infomation from Pendo / Salesforce and Jira
using their APIs to display the infomation.
'''
model = Post
template_name = 'clients/post_detail.html'
def render_to_response(self, context, **response_kwargs):
# pendo api
pendo_result = api_calls.pendo_data()
context['pendo_data'] = pendo_result
# jira api
jira_result = api_calls.jira_data()
context['jira_data'] = jira_result['issues']
return super().render_to_response(context, **response_kwargs)
@register.filter(expects_localtime=True, is_safe=False)
def date(value, arg=None):
jira_api = api_calls.jira_data()
jira_date = jira_api['fields']['updated']
if value in (None, ''):
return ''
if isinstance(value, str):
api_date_format = jira_date
value = datetime.datetime.strptime(value, api_date_format)
try:
return formats.date_format(value, arg)
except AttributeError:
try:
return format(value, arg)
except AttributeError:
return ''发布于 2019-09-02 15:45:14
如果从外部API检索数据,则数据可能是字符串,而不是Python对象。
在这种情况下,您的选择可以是:
如果您想要一个自定义模板过滤器,我首先要从过滤器复制源代码,然后添加几行代码从字符串转换到datetime,然后用新的格式将这些datetime转换回字符串。
也许像这样,在一个名为your_app/templatetags/custom_tags.py的文件中
from django import template
from django.utils import formats
register = template.Library()
@register.filter(expects_localtime=True, is_safe=False)
def custom_date(value, arg=None):
if value in (None, ''):
return ''
if isinstance(value, str):
api_date_format = '%Y-%m-%dT%H:%M:%S'
value = datetime.datetime.strptime(value, api_date_format)
try:
return formats.date_format(value, arg)
except AttributeError:
try:
return format(value, arg)
except AttributeError:
return ''然后像这样在模板中使用:
{% load custom_tags %}
<td class="text-center">
{{ ticket.fields.updated|custom_date:"Y,D,M" }}
</td>https://stackoverflow.com/questions/57759653
复制相似问题