Saya menggunakan Django 1.9 dan Django Rest Framework.

Di Django, ada metode bernama timesince() dan itu digunakan dalam tag template yang disebut memanusiakan, dalam metode yang disebut 'naturaltime'.

Metode waktu alami mengembalikan apa yang saya inginkan (tanggal yang cukup diformat). Timesince tidak begitu berguna dalam sebuah aplikasi.

Bagaimanapun, saya menggunakan file serializer.py untuk DRF, dan saya mengimpor metode itu dengan:

from django.contrib.humanize.templatetags.humanize import naturaltime

Karena ada anotasi @register.filter di bagian atas metode dan register = template.Library() di bagian atas file templatetag, dapatkah ini menyebabkan masalah saat saya impor itu bukan dari template?

0
mrmuggles 23 Juni 2016, 12:32

1 menjawab

Jawaban Terbaik

Tidak, itu seharusnya tidak menimbulkan masalah.

Anda dapat menggunakan fungsi sebagai fungsi python biasa. @register.filter adalah dekorator yang menghias fungsi sebagai filter sementara register = template.Library() membuatnya dapat digunakan sebagai tag template.

Namun, itu juga dapat dipanggil menggunakan tanda tangan yang tepat dalam kode python biasa.

Jadi Anda dapat melakukan:

from django.contrib.humanize.templatetags.humanize import naturaltime
from datetime import datetime as dt

my_human_time = naturaltime(dt.now())
print(my_human_time)
# 'now'
1
Moses Koledoye 23 Juni 2016, 12:55