{{ meu_artigo.conteudo }}
+Reporter: {{ meu_artigo.user.name }}
+Published: {{ meu_artigo.data_publicacao|date }}
+``` + +### ListView + +Uma página que representa uma lista de objetos. +Enquanto essa view está executando a variável ``self.object_list`` vai conter +a lista de objetos que a view está utilizando. + +O fluxo básico de execução dessa classe quando recebe +uma requisição é: + +1. ``dispatch()`` +2. ``http_method_not_allowed()`` +3. ``get_template_names()`` +5. ``get_queryset()`` +6. ``get_object()`` +7. ``get_context_object_name()`` +8. ``get_context_data()`` +9. ``get()`` +10. ``render_to_response()`` + +Nada de novo aqui certo? Podemos exibir apenas uma lista de Artigos que estão +com ``status='publicado'`` + +```python + +from django.views.generic.list import ListView +from django.utils import timezone + +from articles.models import Artigo + +class ArticleListView(ListView): + + model = Artigo + + def get_queryset(self, **kwargs): + return Artigo.objects.filter(status='publicado') +``` + +Outra opção seria: + +```python + +from django.views.generic.list import ListView +from django.utils import timezone + +from articles.models import Artigo + +class ArticleListView(ListView): + + model = Artigo + queryset = Artigo.objects.filter(status='publicado') +``` + +**artigo_list.html** +```html ++ {% if previous_month %} + Previous Month: {{ previous_month|date:"F Y" }} + {% endif %} + {% if next_month %} + Next Month: {{ next_month|date:"F Y" }} + {% endif %} +
+``` + +### WeekArchiveView + +Uma página para exibir um arquivo semanal. Retorna todos os objetos de uma +determinada semana. + +No contexto além da lista de objetos temos ainda: + +- ``week``: Um objeto datetime.datetime representando a semana atual +- ``next_week``: Um objeto datetime.datetime representando a próxima semana +- ``previous_week``: Um objeto datetime.datetime representando a semana anterior + +Implementação simples: + +**views.py** +```python +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 +``` + +**urls.py** +```python +from django.conf.urls import url + +from myapp.views import ArticleWeekArchiveView + +urlpatterns = [ + # Example: /2012/week/23/ + url(http://github.com/r'^(?P%3Cyear%3E[0-9]{4})/week/(?P+ {% if previous_week %} + Previous Week: {{ previous_week|date:"F Y" }} + {% endif %} + {% if previous_week and next_week %}--{% endif %} + {% if next_week %} + Next week: {{ next_week|date:"F Y" }} + {% endif %} +
+``` + +### DayArchiveView + +Uma página para exibir um arquivo diário. Retorna todos os objetos de um +determinado dia. + +No contexto além da lista de objetos temos ainda: + +- ``day``: Um objeto datetime.datetime representando o dia atual +- ``next_day``: Um objeto datetime.datetime representando o próximo dia +- ``previous_day``: Um objeto datetime.datetime representando o dia anterior +- ``next_month``: Um objeto datetime.datetime representando o primeiro dia do + próximo mês +- ``previous_month``: Um objeto datetime.datetime representando o primeiro dia + do mês anterior + +Implementação simples: + +**views.py** +```python +from django.views.generic.dates import DayArchiveView + +from myapp.models import Article + +class ArticleDayArchiveView(DayArchiveView): + queryset = Article.objects.all() + date_field = "pub_date" + allow_future = True +``` + +**urls.py** +```python +from django.conf.urls import url + +from myapp.views import ArticleDayArchiveView + +urlpatterns = [ + # Example: /2012/nov/10/ + url(http://github.com/r'^(?P%3Cyear%3E[0-9]{4})/(?P+ {% if previous_day %} + Previous Day: {{ previous_day }} + {% endif %} + {% if previous_day and next_day %}--{% endif %} + {% if next_day %} + Next Day: {{ next_day }} + {% endif %} +
+``` + +### TodayArchiveView + +É a mesma coisa do ``DayArchiveView`` mas não usa os parâmetros da URL para +determinar o ano/mês/dia. + +O que muda é o urls.py, veja o exemplo abaixo: + +```python +from django.conf.urls import url + +from myapp.views import ArticleTodayArchiveView + +urlpatterns = [ + url(r'^today/$', + ArticleTodayArchiveView.as_view(), + name="archive_today"), +] +``` + +### DateDetailView + +É a mesma coisa que a ``DetailView`` com a diferença que a data é utilizada +junto com o pk/slug para determinar qual objeto deve ser obtido. + +O que muda é o urls.py, veja o exemplo abaixo: + +```python +from django.conf.urls import url +from django.views.generic.dates import DateDetailView + +urlpatterns = [ + url(http://github.com/r'^(?P%3Cyear%3E[0-9]{4})/(?PNenhum comentário novo
+ {% else %} +