DetailView и ListView в urls.py без использования views.py

категория: Django
Как обещал, Class-based generic views вместо простых представлений. Я сейчас пишу сайт для копирайтера, приложение blog написал вообще без использования вьюшек с помощью DetailView.as_view() и ListView.as_view(). В блоге нет ничего особенного просто три модели: Post - для статей, Category - для категорий, Tag - для ключевых слов. Юэрэлки получились такими:
from django.conf.urls import patterns, url
from django.views.generic import ListView, DetailView
from blog.models import Post, Tag, Category
urlpatterns = patterns('',
  url(r'^/?$', ListView.as_view(
    queryset=Post.objects.filter(show = True).order_by("-created"),
    template_name="blog/blog.html"),
    name='blog'),
  url(r'^(?P[\w-]+)/$', DetailView.as_view(
    model=Post,
    template_name='blog/post_detail.html'),
    name='post'),
  url(r'^tag/(?P[\w-]+)/$', DetailView.as_view(
    model=Tag,
    template_name='tag/tag.html'),
    name='tag'),
  url(r'^category/(?P[\w-]+)/$', DetailView.as_view(
    model=Category,
    template_name='category/category.html'),
    name='category'),
)
Пройдусь по темплейтам, чтоб было понятней: blog.html - отображает список всех статей, post_detail.html - показывает отдельную статью, tag.html - отображает все статьи по ключевому слову, category.html - показывает все статьи в выбранной категории. Все элементарные задачи можно решить даже не заходя в views.py, ну а для посложнее задач - придется DetailView и ListView переписывать под себя, об этом я тоже в ближайшем будущем напишу.


blog comments powered by Disqus