当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django WeekArchiveView用法及代码示例


本文介绍 django.views.generic.dates.WeekArchiveView 的用法。

声明

class WeekArchiveView

每周存档页面,显示给定一周内的所有对象。除非您将 allow_future 设置为 True ,否则不会显示日期在 future 中的对象。

祖先 (MRO)

语境

除了 MultipleObjectMixin (通过 BaseDateListView )提供的上下文之外,模板的上下文将是:

注意

  • 使用 _archive_week 的默认 template_name_suffix

  • week_format 属性是用于解析周数的 strptime() 格式字符串。支持以下值:

    • '%U' :基于每周从星期日开始的美国周系统。这是默认值。

    • '%W' :类似于 '%U' ,但它假定一周从星期一开始。这与 ISO 8601 周数不同。

    • '%V' :ISO 8601 周数,该周从星期一开始。

      Django 3.2 中的新函数:

      添加了对'%V' 周格式的支持。

示例 myapp/views.py

from django.views.generic.dates import WeekArchiveView

from myapp.models import Article

class ArticleWeekArchiveView(WeekArchiveView):
    queryset = Article.objects.all()
    date_field = "pub_date"
    week_format = "%W"
    allow_future = True

示例 myapp/urls.py

from django.urls import path

from myapp.views import ArticleWeekArchiveView

urlpatterns = [
    # Example: /2012/week/23/
    path('<int:year>/week/<int:week>/',
         ArticleWeekArchiveView.as_view(),
         name="archive_week"),
]

示例 myapp/article_archive_week.html

<h1>Week {{ week|date:'W' }}</h1>

<ul>
    {% for article in object_list %}
        <li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li>
    {% endfor %}
</ul>

<p>
    {% if previous_week %}
        Previous Week: {{ previous_week|date:"W" }} of year {{ previous_week|date:"Y" }}
    {% endif %}
    {% if previous_week and next_week %}--{% endif %}
    {% if next_week %}
        Next week: {{ next_week|date:"W" }} of year {{ next_week|date:"Y" }}
    {% endif %}
</p>

在此示例中,您将输出周数。请记住,使用'W' 格式字符的 date 模板过滤器计算的周数并不总是与使用'%W' 格式字符串的 strftime() strptime() 计算的相同。例如,对于 2015 年, date 输出的周数比 strftime() 输出的周数高 1。 date 中的 '%U' strftime() 格式字符串没有等效项。因此,您应该避免使用 date WeekArchiveView 生成 URL。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.views.generic.dates.WeekArchiveView。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。