如何从 Django 模板中的 API 响应转换日期

     2023-02-24     45

关键词:

【中文标题】如何从 Django 模板中的 API 响应转换日期【英文标题】:How to convert date from an API response in a Django Template 【发布时间】:2020-01-05 15:37:18 【问题描述】:

我有一个 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 ''

【问题讨论】:

使用|date: 模板过滤器时得到什么输出? 【参考方案1】:

如果从外部 API 检索,您的数据可能是字符串而不是 Python datetime.date 对象。

在这种情况下,您的选择可能是:

自定义模板过滤器,将字符串转换为日期并将其格式化为所需格式的字符串 在您的视图中将字符串转换为日期并将其格式化为所需格式的字符串

如果您想要custom template filter,我会先从built-in date filter 复制源代码,然后添加几行将字符串转换为日期时间,然后将这些日期时间转换回具有新格式的字符串。

可能是这样,在一个名为 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>

【讨论】:

我相信它是一个字符串...这需要正则表达式转换成更好的格式吗?你能解释一下自定义模板过滤器吗?以及我将如何去做,因为我不喜欢正则表达式哈哈 类似于我的编辑 Ralf?我不确定这里是什么意思api_date_format = '????' 所以我在上面猜了一下。 @mrpbennett 我编辑了我的答案;如果您想使用自定义模板过滤器,则需要在单独的文件中定义此过滤器(例如 docs 说)并加载到要使用的模板中。如果你走这条路,通常你的视图不需要修改 这太棒了!!谢谢人...但我收到一个错误unconverted data remains: .745-0700 似乎'%Y-%m-%dT%H:%M:%S' 没有涵盖所有我可能弄错了。 @mrpbennett 看看in this table here 了解如何表示微秒部分

从 typescript 中的 API 响应正确转换日期

】从typescript中的API响应正确转换日期【英文标题】:CastingdatesproperlyfromanAPIresponseintypescript【发布时间】:2021-04-1721:11:59【问题描述】:我有一个RESTAPI,它提供以下格式的数据:-"id":1,"name":"Newevent","date... 查看详情

如何使用 Django 从 POST 表单中获取 JSON 响应

】如何使用Django从POST表单中获取JSON响应【英文标题】:HowtogetaJSONresponsefromaPOSTformusingDjango【发布时间】:2016-04-0616:37:17【问题描述】:我正在尝试使用zermelo的API。我正在使用此表单的“Djangofied”版本来获取授权码。<formaction... 查看详情

Django:如何在新模板中的另一个模型上使用 CreateView 的 form_valid() 返回的响应?

】Django:如何在新模板中的另一个模型上使用CreateView的form_valid()返回的响应?【英文标题】:Django:HowcanIusetheresponsereturnedbyform_valid()ofaCreateViewonanothermodelinanewtemplate?【发布时间】:2019-06-2710:29:49【问题描述】:我正在学习Django,... 查看详情

Django - 如何从模板中的查询集中获取最后一项

】Django-如何从模板中的查询集中获取最后一项【英文标题】:Django-howgetlastitemfromquerysetintemplate【发布时间】:2020-09-1214:00:48【问题描述】:我是Django的初学者,不能做一些非常基本的事情;链接到数据库中的最后一个(或第一... 查看详情

如何访问由 AJAX 响应返回到模板的查询集 - Django

】如何访问由AJAX响应返回到模板的查询集-Django【英文标题】:HowtoaccessQuerysetreturnedtotemplatebyAJAXresponse-Django【发布时间】:2021-03-3105:06:23【问题描述】:我想使用ajax将查询集返回到模板。这是我在一个单独的js文件中的ajax函数... 查看详情

如何保存从 Django 模型中的模板获取的对象列表?

】如何保存从Django模型中的模板获取的对象列表?【英文标题】:Howtosavelistofobjectsgettingfromtemplateindjangomodels?【发布时间】:2020-06-2421:14:37【问题描述】:我正在使用django,我想在我的模型“Detail_equipement”中保存数据列表:这... 查看详情

如何从 Django 模板中的外键访问值

】如何从Django模板中的外键访问值【英文标题】:HowdoIaccessavaluefromaforeignkeyinDjangotemplate【发布时间】:2013-06-0122:40:57【问题描述】:我已经阅读了所有相关的主题,并且已经用尽了我的研究,但我所做的似乎没有任何效果。我... 查看详情

如何从 Django 模板中的页面迭代 cms 插件实例?

】如何从Django模板中的页面迭代cms插件实例?【英文标题】:HowtoiterateovercmsplugininstancesfromapageinaDjangotemplate?【发布时间】:2013-12-1722:43:14【问题描述】:我想显示YouTube视频列表并让我的用户编辑此列表。我想过这样做:制作一... 查看详情

如何在模板中调用 api [关闭]

】如何在模板中调用api[关闭]【英文标题】:HowcanIcalltheapiintemplate[closed]【发布时间】:2021-12-0622:16:45【问题描述】:如何在django模板中调用restapi。我想设计微服务,只是想在前端调用一个api。我怎么能做到这一点。通常当我在... 查看详情

如何将数据值从视图传递到 Django 中的模板?

】如何将数据值从视图传递到Django中的模板?【英文标题】:HowtopassdatavaluesfromViewstoTemplatesinDjango?【发布时间】:2018-02-0307:33:33【问题描述】:目前,我有两个模板:no_results_tickets.html和results_tickets.html。第一个模板包含两个下... 查看详情

如何从模板标签中的模型对象中获取 django 模型字段值

】如何从模板标签中的模型对象中获取django模型字段值【英文标题】:Howtogetdjangomodelsfieldvaluefrommodelobjectintemplatetags【发布时间】:2011-10-0709:20:53【问题描述】:Models.py:classDiscussion(models.Model):version=models.TextField(blank=True)team=model... 查看详情

如何从 django 模板中的 for 循环中获取特定的 id?

】如何从django模板中的for循环中获取特定的id?【英文标题】:Howtogetspecificidfromforloopindjangotemplate?【发布时间】:2021-07-2703:09:26【问题描述】:我正在使用django和javascript,我正在尝试在不刷新页面的情况下关注和取消关注多个... 查看详情

Django 1.11 如何从保存在 CMS 站点模型中的 HTML 中显示模板变量

】Django1.11如何从保存在CMS站点模型中的HTML中显示模板变量【英文标题】:Django1.11HowtodisplaytemplatevariablefromwithinHTMLsavedinmodelforCMSSite【发布时间】:2018-01-2510:03:27【问题描述】:在模板中,我需要从保存在模型实例中的HTML内容呈... 查看详情

如何让下拉选择从 Django 模型中填充模板中的 DataTables 表?

】如何让下拉选择从Django模型中填充模板中的DataTables表?【英文标题】:HowtohavedropdownselectionpopulateDataTablestableintemplatefromDjangomodel?【发布时间】:2018-08-2710:11:48【问题描述】:希望我能得到一些帮助。我基本上在我的网站上有... 查看详情

模板中的 Django Json 响应格式

】模板中的DjangoJson响应格式【英文标题】:DjangoJsonResponseformattingintemplates【发布时间】:2021-11-0519:16:50【问题描述】:是否有可能以某种方式保持JSON响应的原样并将其缩进为正确的格式?我想在我的list.html模板中呈现list_text,... 查看详情

Django:如何从模板中识别调用视图?

】Django:如何从模板中识别调用视图?【英文标题】:Django:HowcanIidentifythecallingviewfromatemplate?【发布时间】:2010-10-2200:01:39【问题描述】:短版:是否有一种简单的内置方法来识别Django模板中的调用视图,而无需传递额外的上下... 查看详情

如何将json响应转换为javalist-使用restassured进行api测试

...esponseString,JSONPath)。所以寻找一些简单而更好的选择。如何将JSON响应转换为JavaList。 查看详情

django:从模板中的视图调用函数

...t_base_content():footer=SiteContent.objects.get(pk=1)return"footer":footer,如何在我的template中调用此函数并在 查看详情