#python #python-3.x #django #django-templates
#python #python-3.x #django #django-шаблоны
Вопрос:
Я хочу присвоить URL-адресу значение типа Datetime в качестве параметра, используя фильтр даты.
Мой URL-адрес должен быть таким: /account/detail-of-cash-flow/2020-8-10
Эта команда: {{item.date_field|date:'Y-m-d'}}
= ‘2020-8-10’. Но, не работает, когда я эти команды реализую для URL-адреса шаблона.
template.html
{% for item in cash_flow_data %}
<tr class='clickable-row' data-href="{% url 'account:detail_of_cash_flow' item.date_field|date:'Y-m-d' %}">
<td>{{ item.date_field }}</td>
<td>{{ item.EUR }}</td>
<td>{{ item.USD }}</td>
<td>{{ item.GBP }}</td>
<td>{{ item.TRY }}</td>
</tr>
{% endfor %}
urls.py
app_name = "account"
urlpatterns = [
path('daily-cash-flow/', views.daily_cash_flow, name = "daily_cash_flow"),
path('detail-of-cash-flow/<slug:slug>/', views.detail_of_cash_flow, name = "detail_of_cash_flow")
]
Надеюсь, я смог объяснить свою проблему.
Ответ №1:
в вашей модели элемента добавьте метод, который вернет нужный вам формат
class ItemModel(models.Model):
...
def get_url_date(self):
return self.date_field.strftime("%Y-%m-%d")
а затем в шаблоне вы можете использовать
<a href="{% url 'account:detail_of_cash_flow' item.get_url_date %}">link</a>
upd:
в зависимости от вашего контекста у вас есть несколько вариантов
- обновите данные контекста
context_flow_data = [ { 'url_date': item_data['date_field'].strftime("%Y-%m-%d"), 'date': item_data['date_field'], 'USD': item_data['USD'], 'EUR': item_data['EUR'], 'GBR': item_data['GBR'], } for item_data in cash_flow_data ]
а затем предоставьте эти данные вашему контексту
и в использовании шаблона
<a href="{% url 'account:detail_of_cash_flow' item.url_date %}">link</a>
второй вариант:
вы можете добавить строку
urlpatterns = [
...
path('detail-of-cash-flow/', views.detail_of_cash_flow, name = "detail_of_cash_flow")
...
]
а затем в шаблоне использовать
<a href="{% url 'account:detail_of_cash_flow' %}{{item.date_field|date:'Y-m-d'}}/">link</a>
Комментарии:
1. Это предложение не сработало. Я получаю: обратный для ‘detail_of_cash_flow’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘account/detail\-of\-cash\-flow/(?P<slug>[-a-zA-Z0-9_] )/$’]
2.
{{ item.get_url_date }}
= null3. итак, какой URL-адрес вам нужен, если date_field равно null?
4. Ох, жаль. Теперь запомните. Мои контекстные данные: paste.ubuntu.com/p/ZDbV9dmVSG