python - 将日期时间对象传递给 django 中的 url

标签 python django python-3.x datetime url

我如何传递日期时间,例如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/

相关文章:

python - 无法为 Python 运行 scrapy

python - 如何修改另一个作用域的变量?

Django python-magic 将上传的ppt、docx、word文件识别为 'application/zip'

macos - 通过自制软件的 gcc 没有 --without-multilib 选项

python - pyth 错误 [rtf 到 xml/html]

python - 必需的位置参数 : self

python - 获取两个条件(在不同数组上)为真的数组索引

django - Atom 文本编辑器终端无法正常工作

django - 学习Django框架

python - BeautifulSoup 返回空列表