Как получить значение запроса в другом классе в django?

Это пример, который максимально похож на реальный код, и он не совсем такой же, как реальный код.

Но я считаю, что это легко понять.

class Fruits:

    ...
    def get_sample_data(self, df):
        ...
        data = {
            'put_file_attachment': >here<,
        }
    ...



class DataInputForm(forms.Form):
    attachment = forms.FileField()



class MyView(FormView):
    template_name = 'view.html'
    form_class = DataInputForm

    def get_success_url(self):
        return str(
            reverse_lazy("milk")
        )

    def post(self, request, *args, **kwargs):
        get_file = request.FILES.get('attachment')
        ...

        k = Fruits()
        k.load_data()


        return self.render_to_response(context)

Хотелось бы принести вложение (Фактически get_file), которое пользователь прикрепил к веб-классу Fruits's >here<

Другими словами, я хочу сохранить файл(get_file) в колонке DB (put_file_attachment) по вложению пользователя. Как я могу получить значение, переданное в запрос из другого класса в другой класс?

Я попытался получить 'get_file', создав объект MyView в классе Fruit, но это не работает.

Возможно ли это в данной структуре или я не понимаю концепции запроса?

Вы можете передать значение get_file из класса MyView в класс Fruits, сделав get_file переменной экземпляра MyView и обратившись к ней в Fruits через экземпляр MyView.

Вот пример:

class Fruits:
    def get_sample_data(self, my_view_instance):
        ...
        data = {
            'put_file_attachment': my_view_instance.get_file,
        }
    ...


class MyView(FormView):
    template_name = 'view.html'
    form_class = DataInputForm

    def get_success_url(self):
        return str(
            reverse_lazy("milk")
        )

    def post(self, request, *args, **kwargs):
        self.get_file = request.FILES.get('attachment')
        ...

        k = Fruits()
        k.get_sample_data(self)

        return self.render_to_response(context)


Если это поможет вам, пожалуйста, проголосуйте. Это предоставлено вам Creative AIs, предлагающим решения, созданные искусственным интеллектом, для всех. :) Если вам интересно узнать о нас, посмотрите нашу биографию!

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

Итак, либо рефакторить ваш класс Fruits, чтобы он принимал ваш файл как аргумент конструктора (то есть __init__), либо передать его каким-то другим способом, например, как параметр метода load_data.

Вернуться на верх