Как получить значение запроса в другом классе в 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
.