Как передать переменные контекста, которые используют запрос в представлениях на основе классов в django? - PullRequest
1 голос
/ 27 апреля 2020

В других моих представлениях я передаю следующую контекстную переменную.

tab: 'documents'
authenticated: request.user.is_authenticated
Exec: ('Exec' in groups)
ElectionOfficer: ('ElectionOfficer' in groups)
Staff: request.user.is_staff
Username: request.user.username
URL_ROOT: settings.URL_ROOT

Как я могу передать те же самые переменные при доступе к странице, которая отображается с /multiple url?

в моем urls.py

url(r'^multiple$', views.SubmissionUploadPage.as_view(), name='multiple_example')

в моем forms.py

class MultipleFileExampleForm(BaseForm):
    input_file = MultipleUploadedFileField()

    def save(self):
        example = UserSubmission.objects.create(
            title=self.cleaned_data['title']
        )
        for f in self.cleaned_data['input_file']:
            UploadedFile.objects.create(
                example=example,
                input_file=f
            )

        self.delete_temporary_files()

в моем views.py

class BaseFormView(generic.FormView):
    template_name = 'file_uploads/example_form.html'

    def get_success_url(self):
        return reverse('success')

    def form_valid(self, form):
        form.save()
        return super(BaseFormView, self).form_valid(form)

class SubmissionUploadPage(BaseFormView):
    form_class = forms.MultipleFileExampleForm

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете переопределить get_context_data и ввести следующие значения:

from django.conf import settings

class BaseFormView(generic.FormView):
    template_name = 'file_uploads/example_form.html'

    def <b>get_context_data</b>(self, *args, **kwargs):
        kwargs.update(
            tab='documents',
            authenticated=self.request.user.is_authenticated,,
            Exec=self.request.users.groups.filter(name='Exec').exists(),
            ElectionOfficer=self.request.users.groups.filter(name='ElectionOfficer').exist(),
            Staff=self.request.user.is_staff,
            Username=self.request.user.username,
            URL_ROOT: settings.URL_ROOT
        )
        return super().get_context_data(*args, **kwargs)

    def get_success_url(self):
        return reverse('success')

    def form_valid(self, form):
        form.save()
        return super(BaseFormView, self).form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...