generic¶
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')
ArchiveIndexView¶
CreateView¶
- class
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’
-
DayArchiveView¶
DetailView¶
- class
django.views.generic.
DetailView
¶ Вьюха для отображения информации объекта из БД
Наследник:
class SomeDetailView(DetailView): model = SomeModel
FormView¶
- class
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()
ListView¶
- class
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
()¶ Возвращает объект запросы БД
MonthArchiveView¶
TemplateView¶
- class
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
¶ Путь к шаблону
-
TodayArchiveView¶
UpdateView¶
- class
django.views.generic.
UpdateView
¶ Представление для обновления объекта модели
-
fields
¶ Список полей модели, которые будут на форме
-
initial
¶ Словарь начальных данных для формы
-
success_url
¶ Адрес, на который будет пепрезод после успешного обновления
-
template_name_suffix
¶ Суффикс для шаблона, по умолчанию ‘_form’
-
YearArchiveView¶
- class
django.views.generic.
YearArchiveView
¶ Представление выводит список записей, относящихся к указанному году.
Наследник:
class SomeYearArchiveView(YearArchiveView): model = SomeModel date_field = 'created' make_object_list = True
-
template_name_suffix
¶ Суффикс для поиска шаблонов, по умолчанию ‘_archive_year’
-
Базовые классы¶
BaseArchiveIndexView¶
BaseCreateView¶
- class
django.views.generic.edit.
BaseCreateView
¶ Базовое представление для создания элемента модели
Наследник:
BaseDateListView¶
- class
django.views.generic.dates.
BaseDateListView
¶ Базовый класс для списка записей с учетом дат
В контекте положит:
latest - список записей вывода
date_list - список всех годов
параметры пагинации из
django.views.generic.list.MultipleObjectMixin
Наследник:
django.views.generic.base.View
BaseDayArchiveView¶
- class
django.views.generic.dates.
BaseDayArchiveView
¶ Базовый класс для представлений по дням
В контекст положит:
day - текущая дата
previous_day - предыдущая дата
next_day - следующая дата
previous_month - предыдущий месяц
next_month - следующий месяц
Наследник:
BaseDetailView¶
BaseListView¶
- class
django.views.generic.list.
BaseListView
¶ Базовый класс для представления списка объектов
Наследник:
BaseMonthArchiveView¶
- class
django.views.generic.dates.
BaseMonthArchiveView
¶ Базовый класс для представления списка объектов за указанный месяц
В контекст положит:
month - текущий месяц
next_month - следующий месяц
previous_month - предыдущий месяц
Наследник:
BaseTodayArchiveView¶
- class
django.views.generic.dates.
BaseTodayArchiveView
¶ Базовый клас для представления списка элементов за сегодня
Наследник:
BaseYearArchiveView¶
View¶
- class
django.views.generic.
View
¶ Базовый класс для всех предсавлений
Поддерживает методы запроса (get, post, put, patch, delete, head, options, trace) для обработки запроса, т.е. можно просто объявить метод класса по однойменному методу, который будет соответсвенно обрабатывать метод запроса.
-
as_view
(**initkwargs)¶ Возвращает экземпляр класса представления, обработчико запросов
-
Миксины¶
ContextMixin¶
DateMixin¶
DayMixin¶
FormMixin¶
ModelFormMixin¶
MonthMixin¶
MultipleObjectMixin¶
- class
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
¶ Сортировка элементов представления
MultipleObjectTemplateResponseMixin¶
- class
django.views.generic.list.
MultipleObjectTemplateResponseMixin
¶ Миксин позволяет брать в качестве шаблона шаблон, по пути app_name/model_name_list.html
Наследник
django.views.generic.base.TemplateResponseMixin
-
template_name_suffix
¶ Суффикс для шаблона списка, по умолчанию ‘_list’
-
ProcessFormView¶
- class
django.views.generic.edit.
ProcessFormView
¶ Помещает в контекст форму
Наследник:
SingleObjectMixin¶
- class
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
¶ Использовать слаг филд для получения объекта
-
SingleObjectTemplateResponseMixin¶
- class
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’
-
TemplateResponseMixin¶
- class
django.views.generic.base.
TemplateResponseMixin
¶ Миксин, возвращает отрендеренный шаблон для запроса
-
template_name
¶ Путь к шаблону
-
template_engine
¶ Шаблонизатор, по умолчанию дефолтный
-
response_class
¶ Класс ответа, по умолчанию
django.template.response.TemplateResponse
-
content_type
¶
-
render_to_response
(context, **response_kwargs)¶ Возвращает ответ на запрос
-