Есть ли способ в Django функции записи CBV, чтобы добавить информацию в контекст - PullRequest
0 голосов
/ 02 мая 2020

У меня есть следующий код

class MusicFileUploadView(TemplateView):
    template_name = "music_file_upload.html"

    def get(self, request, *args, **kwargs):
        return super().get(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        if 'csv-file' in request.FILES.keys():
            csv_file = request.FILES['csv-file']
            upload = FileUpload(csv_file=csv_file)
            if request.user.is_authenticated:
                upload.user_uploaded = request.user
            response = upload.save()
            if response['error']:
                #add error to context
                pass
            else:
                pass
        else:
            pass

        return super().get(request, *args, **kwargs)

, где в разделе сообщений я сохраняю загружаемый файл и анализирую его, в случае ошибки я хочу включить сообщение в контекст, чтобы я мог отобразить это на той же странице.

Есть ли способ включить это в функцию записи?

1 Ответ

0 голосов
/ 02 мая 2020

Вам необходимо вызвать метод get_context_data().

get_context_data() по существу берет **kwargs и возвращает их как словарь с любым extra_context из вашего класса представления.

Поэтому, когда вы вызываете родительский класс post() или get(), вам нужно будет включить ваш обновленный контекст в ** kwargs.

class MusicFileUploadView(TemplateView):
    ...
    def post(self, request, *args, **kwargs):
        # Get the context
        context = self.get_context_data(**kwargs)

        # Modify the context here.

        # Pass the updated context to the parent class
        return super().get(request, *args, **context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...