Каков хороший способ написать представление на основе классов django, которое отображает объект на основе даты и форму? - PullRequest
2 голосов
/ 09 февраля 2012

Каков наилучший способ написания представления на основе классов, которое отображает объект на основе даты и форму? Вариант использования - представление страницы индекса сайта, которое отображает сегодняшний объект и имеет контактную форму.

Сначала я подумал об использовании TodayArchiveView и ContactFormView в качестве миксинов для просмотра страницы индекса моего сайта. Однако TodayArchiveView наследуется от BaseDateListView, а ContactFormView наследуется от ProcessFormView. И ProcessFormView, и BaseDateListView реализуют get () и в конечном итоге вызывают render_to_response с очень разными данными, поэтому я думаю, что это не сработает, потому что даже если бы я мог вызвать оба с помощью super, что будет возвращено? (Я даже не уверен, что мои мысли на этот счет верны; я все еще склоняюсь к мысли о множественном наследовании.)

Тогда я подумал о написании собственного get (), который сочетает в себе функциональность двух get, поскольку, насколько я могу судить, их функциональность не конфликтует. Так что это выглядело как:

def get(self, request, *args, **kwargs):
    form_class = self.get_form_class()
    form = self.get_form(form_class)

    self.date_list, self.object_list, extra_context = self.get_dated_items()
    context = self.get_context_data(form=form, object_list=self.object_list,
        date_list=self.date_list)
    context.update(extra_context)
    return self.render_to_response(context)

Это правильный подход?

В качестве более крупного вопроса, откуда вы знаете, какие миксины можно использовать друг с другом? Мне пришлось обратиться к источнику django, чтобы понять, что оба класса реализуют get ().

1 Ответ

2 голосов
/ 10 февраля 2012

Ваша форма связана с объектом или нет?Из описания кажется, что это не так, и я предполагаю, что ваша контактная форма находится в какой-то боковой панели или подобном элементе всего сайта (или, по крайней мере, всего раздела).это правильно, я бы вообще не включал форму в представление;вместо этого я бы использовал тег, метод включения или аналогичный метод для размещения отдельного шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...