Я начинаю с django (и stackoverflow!)
Я пытался создать веб-страницу с формой и списком элементов.( Django - Смешивание ListView и CreateView ).Я придумал решение, но мой код меня не убедил!
Я использую Django mixin BaseCreateView
и BaseListView
для генерации формы и списка данных контекста.Но поскольку это взгляды, они звонят напрямую render_to_response()
.
Итак, я перегрузил метод get()
, чтобы вручную вызвать оба родительских метода и извлечь данные контекста.Затем я сам позвонил * 1013.
class FormAndListView(BaseCreateView, BaseListView, TemplateResponseMixin):
def get(self, request, *args, **kwargs):
formView = BaseCreateView.get(self, request, *args, **kwargs) # formView contains a response_class
listView = BaseListView.get(self, request, *args, **kwargs) # listView contains a response_class as well...
formData = formView.context_data['form'] # extract the form from the response_class
listData = listView.context_data['object_list'] # extract the object list from the response_class
return render_to_response('textfrompdf/index.html', {'form' : formData, 'all_PDF' : listData},
context_instance=RequestContext(request))
С одной стороны, я не переписываю то, что уже есть в миксине, для управления формами и списками элементов ... С другой стороны, djangoвычисление всего render_to_response()
3 раза!
Каким будет чистый Django-способ написать эту страницу?