Если вы пытаетесь использовать этот URL:
url(r'^(?P<year>\d{4})/$', PostYAV.as_view(), name='post_year_archive'),
Затем вызовите его из шаблона следующим образом:
{% url 'blog:post_year_archive' year|date:'Y' %}
И представление должно быть таким:
class PostYAV(YearArchiveView):
model = Post
date_field = 'modify_date'
make_object_list = True
def get(self, request, year, *args, **kwargs):
post = Post.objects.filter(created__year=year) # assuming created= models.DateField() or similar
Но , если у вас также есть месяц (как, например, изображение, поделенное с вопросом, попробуйте вот так)
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/$', PostYAV.as_view(), name='post_year_archive'),
Шаблон :
{% url 'blog:post_year_archive' year|date:'Y' month|date:'m' %}
Просмотр:
class PostYAV(YearArchiveView):
model = Post
date_field = 'modify_date'
make_object_list = True
def get(self, request, year, month, *args, **kwargs):
post = Post.objects.filter(created__year=year, created__month=month) # assuming created= models.DateField() or similar
Произошла ошибка в вашем вопросе, поскольку регулярное выражение URL не совпадало с аргументами, передаваемыми из шаблона.%b
показывает локализованный месяц и не соответствует регулярному выражению [a-z]{3}
.Поэтому вместо %m
месяц будет передан как число, и мы обновили регулярное выражение для месяца, чтобы поймать число, отправленное из шаблона.