Как передать в reverse() аргумент? Django

Код в urls.py:

urlpatterns = [
    path('', TaskListView.as_view(), name='home_page'),
    path('create_task/', TaskCreateView.as_view(), name='create-task'),
    path('<int:year>/<int:month>/<int:day>/<int:pk>/update_task/', TaskUpdateView.as_view(), name='update-task'),
    path('<int:year>/<int:month>/<int:day>/<int:pk>/delete_task/', TaskDeleteView.as_view(), name='delete-task'),
] 

Код в models.py:

def get_absolute_url_for_update(self):
        return reverse('update-task', kwargs={'year': self.publish.year,
                                              'month': self.publish.month,
                                              'day': self.publish.day,
                                              'pk': self.pk})
def get_absolute_url_for_delete(self):
        return reverse('delete-task', kwargs={'year': self.publish.year,
                                              'month': self.publish.month,
                                              'day': self.publish.day,
                                              'pk': self.pk})

Код в task.html

{% block content %}

{% for task in task_list %}
    <p> {{ task }} </p>
    <strong> <a href="{{ task.get_absolute_url_for_update}}"> Изменить </a> </strong>
    <strong> <a href="{{ task.get_absolute_url_for_delete }}"> Удалить </a> </strong>
{% endfor %}

{% endblock %}

Суть вопроса: У меня в моей модели Task есть два get_absolute_url метода, которые по сути своей выполняют одну и ту же работу, этим самым нарушая DRY, есть ли какой то способ, чтобы в шаблоне html передавать параметр для get_absolute_url, например, get_absolute_url(self, args): И отталкиваясь от этого возвращать reverse с тем или иным именем. Или , может быть, есть какие-то другие альтернативы, дабы решить данную проблему.

P.S. я новичок, первый пост.

Вы можете написать свой новый класс, наследованный от reverse и перезагрузить там этот метод, так как Вам надо

Создайте функцию, которая будет создавать окончание ссылки

def make_ending_url(self):
  return {'year': self.publish.year, 'month': self.publish.month, 'day': self.publish.day, 'pk': self.pk}}

И в get_absolute_url:

def get_absolute_url_for_update(self):
        return reverse('update-task', kwargs=self.make_ending_url())

def get_absolute_url_for_delete(self):
        return reverse('update-task', kwargs=self.make_ending_url())
Вернуться на верх