from django.contrib.admin.decorators import login_required
from django.http import HttpResponse
from django.utils.decorators import method_decorator
from django.view.generic import View
class IndexView(View):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request, *args, **kwargs)
def get(self, request):
return HttpResponse('Hello world')
from django.http import HttpResponse
from django.view.generic import View
class LoginRequiredMixin(object):
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated():
raise PermissionDenied()
return super().dispatch(request, *args, **kwargs)
class IndexView(LoginRequiredMixin, View):
def get(self, request):
return HttpResponse('Hello world')
django.views.generic.
ArchiveIndexView
Представление для вывода списка записей, отсортированных по убыванию значения даты.
Наследник:
class SomeArchiveView(ArchiveView):
model = SomeModel
date_field = 'created'
template_name_suffix
Суффикс для шаблона, по умолчанию ‘_archive’
django.views.generic.
CreateView
Представление для создания нового элемента модели
Наследник:
class FeedView(CreateView):
model = models.Post
template_name = "feed.html"
success_url = reverse_lazy("index")
fields = []
form_class = Form
def form_valid(self, form):
return super().form_valid(form)
template_name_suffix
Суффикс для шаблона, по умолчанию ‘_form’
django.views.generic.
DateDetailView
django.views.generic.
DayArchiveView
Представление для списка записей по дням
Наследник:
class SomeDayArchiveView(DayArchiveView):
model = SomeModel
date_field = 'created'
make_object_list = True
template_name_suffix
Суфикс для шаблона, по умолчанию “_archive_day”
django.views.generic.
DeleteView
Вьюха для удаления объекта из БД
django.views.generic.
DetailView
Вьюха для отображения информации объекта из БД
Наследник:
class SomeDetailView(DetailView):
model = SomeModel
django.views.generic.
FormView
from django.core.urlresolvers import reverse_lazy
class GenericFormView(generic.FormView):
template_name = 'form.html'
form_class = DetailsForm
success_url = reverse_lazy("success")
def get_form_kwargs(self):
return super().get_form_kwargs()
django.views.generic.
ListView
Представление отображает страницу списка объектов
Наследник:
Контекст:
object_list - список объектов указанной модели
paginator - объект для пагинации
class PostListView(ListView):
queryset = Post.objects.all()
context_object_name = 'posts'
paginate_by = 3
template_name = 'list.html'
class PostListView(ListView):
model = Post
template_name = 'list.html'
def get_queryset(self):
qs = super().get_queryset()
return qs.filter(name='ilnurgi')
model
Модель для представления
paginate_by
Количесвто записей на странице
template_name
Путь к файлу шаблона, по умолчанию app_name/model_name_list.html
template_name_suffix
Суффикс для файла шаблона, по умолчанию _list
get_queryset
()Возвращает объект запросы БД
django.views.generic.
MonthArchiveView
Представление списка записей за указанный год и месяц
Наследник:
class SomeMonthArchiveView(MonthArchiveView):
model = SomeModel
date_field = 'created'
make_object_list = True
template_name_suffix
Суфикс для шаблона, по умолчанию ‘_archive_month’
django.views.generic.
RedirectView
django.views.generic.
TemplateView
Представление возвращащает ответ, в виде отрендеренного шаблона.
Наследник:
class AboutView(TemplateView):
template_name = 'about.html'
def get_context_data(self, **kwargs):
context = super().get_context_data()
# self.request
# self.args
# self.kwargs
return context
args
Неименованные параметры обработки запроса
kwargs
Именованные параметры обработки запроса
request
Запрос
template_name
Путь к шаблону
django.views.generic.
TodayArchiveView
Представление для списка записей для текущей даты
Наследник:
template_name_suffix
Суфикс для шаблона, по умолчанию “_archive_day”
django.views.generic.
UpdateView
Представление для обновления объекта модели
fields
Список полей модели, которые будут на форме
initial
Словарь начальных данных для формы
success_url
Адрес, на который будет пепрезод после успешного обновления
template_name_suffix
Суффикс для шаблона, по умолчанию ‘_form’
django.views.generic.
WeekArchiveView
django.views.generic.
YearArchiveView
Представление выводит список записей, относящихся к указанному году.
Наследник:
class SomeYearArchiveView(YearArchiveView):
model = SomeModel
date_field = 'created'
make_object_list = True
template_name_suffix
Суффикс для поиска шаблонов, по умолчанию ‘_archive_year’
django.views.generic.dates.
BaseArchiveIndexView
Базовый класс для архивных записей
context_object_name
Название переменной в контексте, в котором будут содержаться записи
django.views.generic.edit.
BaseCreateView
Базовое представление для создания элемента модели
Наследник:
django.views.generic.dates.
BaseDateListView
Базовый класс для списка записей с учетом дат
В контекте положит:
latest - список записей вывода
date_list - список всех годов
параметры пагинации из
django.views.generic.list.MultipleObjectMixin
Наследник:
django.views.generic.base.View
django.views.generic.dates.
BaseDayArchiveView
Базовый класс для представлений по дням
В контекст положит:
day - текущая дата
previous_day - предыдущая дата
next_day - следующая дата
previous_month - предыдущий месяц
next_month - следующий месяц
Наследник:
django.views.generic.detail.
BaseDetailView
Базовый класс для представления объекта
В контекст положит:
object - объект
Наследник:
object
Объект для представления
django.views.generic.list.
BaseListView
Базовый класс для представления списка объектов
Наследник:
django.views.generic.dates.
BaseMonthArchiveView
Базовый класс для представления списка объектов за указанный месяц
В контекст положит:
month - текущий месяц
next_month - следующий месяц
previous_month - предыдущий месяц
Наследник:
django.views.generic.dates.
BaseTodayArchiveView
Базовый клас для представления списка элементов за сегодня
Наследник:
django.views.generic.dates.
BaseYearArchiveView
Базовый класс для представлении списка элементов по годам
В контекст положит:
date_list - список дат
year - указанный год
next_year - следующий год
previous_year - прошлый год
Наследник:
date_list_period
‘month’
make_object_list
False
django.views.generic.
View
Базовый класс для всех предсавлений
Поддерживает методы запроса (get, post, put, patch, delete, head, options, trace) для обработки запроса, т.е. можно просто объявить метод класса по однойменному методу, который будет соответсвенно обрабатывать метод запроса.
as_view
(**initkwargs)Возвращает экземпляр класса представления, обработчико запросов
django.views.generic.base.
ContextMixin
Миксин, для поддержки контекста в представлениях
get_context_data
(**kwargs)Возвращает контекст для представления
django.views.generic.dates.
DateMixin
allow_future
Булево, использовать и будущие записи
date_field
Имя поля модели, на основе которого будет строиться сортировка
model
Модель, по которому будут фильтровать записи
django.views.generic.dates.
DayMixin
Миксин для поддержки дня
day_format
Формат для даты, по умолчанию ‘%d’
day
День
django.views.generic.edit.
FormMixin
Миксин для создания форм
initial
Начальные данные формы
form_class
Класс формы
success_url
Урл, на которой переходим в результате успешного сохранения
prefix
get_form_kwargs
()Возвращает параметры для формы
django.views.generic.edit.
ModelFormMixin
Миксин создает форму по модели
Наследник:
fields
Поля модели, которые будут на форме
django.views.generic.dates.
MonthMixin
Миксин для поддержки фильтрации по месяцу
month_format
Формат для месяца, по умолчанию ‘%b’
month
Месяц
django.views.generic.list.
MultipleObjectMixin
Миксин для поддержки просмотра множества объектов, имеет пагинацию.
В контексте положит:
paginator - объект,пагинатор
page_obj - объект, страница
is_paginated - булево, имеется ли более 1 страницы
object_list - queryset элементов представления
allow_empty
Булево, пустая страница
queryset
QuerySet для представления.
Не обязательный параметр, можно просто задать модель.
model
Модель, с объектами которого производится манипуляция.
Не обязательный параметр, можно просто задать QuerySet.
paginate_by
Количесвто элементов на странице
paginate_orphans
Количество элементов на последней странице
context_object_name
Название объекта в контексте, по умолчанию ‘object_list’
paginator_class
Класс, реализующий пагинацию,
по умолчанию django.core.paginator.Paginator
page_kwarg
Название переменной в контексте, для страницы, по умолчанию ‘page’
ordering
Сортировка элементов представления
django.views.generic.list.
MultipleObjectTemplateResponseMixin
Миксин позволяет брать в качестве шаблона шаблон, по пути app_name/model_name_list.html
Наследник django.views.generic.base.TemplateResponseMixin
template_name_suffix
Суффикс для шаблона списка, по умолчанию ‘_list’
django.views.generic.edit.
ProcessFormView
Помещает в контекст форму
Наследник:
django.views.generic.detail.
SingleObjectMixin
Миксин для представления одного объекта
model
Модель, откуда будет браться объект, или можно задать просто кверисет
queryset
QuerySet для выборки объекта, можно просто задать модель
slug_field
Название слаг поля, по которому можно получить объект из БД, по умолчанию ‘slug’
context_object_name
Название переменной в контексте, по умолчанию ‘object’
slug_url_kwarg
Название переменной в запросе, которая содержит слаг поле, по умолчанию ‘slug’
pk_url_kwarg
Название переменной в запросе, которая содержит первичный ключ объекта, по умолчанию ‘pk’
query_pk_and_slug
Использовать слаг филд для получения объекта
django.views.generic.detail.
SingleObjectTemplateResponseMixin
Миксин позволяет брать в качестве шаблона шаблон, по пути app_name/model_name_detail.html, из самого объекта
Наследник django.views.generic.base.TemplateResponseMixin
model
Модель, для которой обрабатывается представление, шаблон будет браться по пути app_name/model_name_detail.html
Не обязательный параметр
template_name_field
Название атрибута в объекте, который отображает представление, в котором указан путь к шаблону
Не обязательный параметр
template_name_suffix
Суффикс для шаблона списка, по умолчанию ‘_detail’
django.views.generic.base.
TemplateResponseMixin
Миксин, возвращает отрендеренный шаблон для запроса
template_name
Путь к шаблону
template_engine
Шаблонизатор, по умолчанию дефолтный
response_class
Класс ответа, по умолчанию django.template.response.TemplateResponse
content_type
render_to_response
(context, **response_kwargs)Возвращает ответ на запрос
django.views.generic.dates.
YearMixin
Миксин для представлении списка по годам
year_format
Строка, формат по которому будет распозноваться полученное значение года.
По умолчанию ‘%Y’
year
Год в виде строки