我如何传递日期时间,例如datetime.date(2017, 12, 31) 对象到 django 中的 url?
我的模板:
{% for key, value in my_dictionary.items %}
{{ key.0 }} # it displays Dec. 31, 2017
...
{% endfor %}
将其传递给网址:
href="{% url 'my_url:my_date' selected_day=key.0 %}">
我的urls.py:
url(r'^my-date/(?P<selected_day>\w+)/$', name='my_date')
错误:
Exception Type: NoReverseMatch
Exception Value: Reverse for 'my_date' with keyword arguments
'{'selected_day': datetime.date(2017, 12, 31),}'not found. 1 pattern(s) tried: ['my-url/my-date/(?P<selected_day>\\w+)/$']
最佳答案
网址模式中的组 selected_day
只能包含单词字符 \w
。其中包括数字,但不包括空格或破折号。
url(r'^my-date/(?P<selected_day>\w+)/$', name='my_date')
如果您的日期字符串使用 iso8601 日期格式,则可以使用此 url 模式。
url(r'^my-date/(?P<selected_day>\d{4}-\d{2}-\d{2})/$', name='my_date')
在日期对象上简单使用 str(date)
应默认使用 iso 格式 (YYYY-MM-DD)。您可以在 View 函数中将日期字符串解析为日期对象。但 django QuerySets 将接受日期字符串作为参数,因此可能不需要该步骤。
def my_date_view(request, selected_day):
# this works with either a date object or a iso formatted string.
queryset = MyModel.objects(published_on=selected_day)
# or use strptime to get a date object.
date = datetime.datetime.strptime(selected_day, '%Y-%M-%d').date()
Django 还包含一个可用于解析日期字符串的实用函数: django.utils.dateparse.parse_date
关于python - 将日期时间对象传递给 django 中的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068159/