Передача значений из представлений django в формы django
Я пытаюсь передать значение из views.py в forms.py в django
views.py:
def pods(request):
clusterName = request.GET.get('data') ----> this is the value I want to pass to forms
return render(request,'pods.html',{"nodeForm":forms.getPodsOnNodes()})
forms.py:
class getPodsOnNodes(forms.Form):
nodeName = forms.ChoiceField(label='Node Name',choices=functions.choiceMaker(functions.nodesList(**this is where I want to use clusterName from views**)))
Не могли бы вы сообщить мне, как я могу это сделать?
Рассматривается возможность получения данных из post запроса, передавая их в html
form = getPodsOnNodes(request.POST)
if form.is_valid():
clusterName = request.POST["data"]
return render(request, 'pods.html', context={'nodeForm': form, 'variable_name': clusterName})
Вы можете передавать переменные в форму из представления, вызывая форму с kwargs :
def pods(request):
clusterName = request.GET.get('data') ----> this is the value I want to pass to forms
return render(request,'pods.html',{"nodeForm":forms.getPodsOnNodes(clusterName)})
В вашей форме вы должны получить значение вашего kwarg в вашем методе __init__
( перед унаследованным методом , иначе вы получите ошибку из-за неопределенного kwarg). Однако затем вам нужно будет определить ваше поле внутри метода __init__
, так как в противном случае ваша переменная nodeName
не будет определена.
Таким образом, класс вашей формы станет таким:
class getPodsOnNodes(forms.Form):
def __init__(self, *args, **kwargs):
nodeName = kwargs.pop('nodeName')
super().__init__(*args, **kwargs)
self.fields['nodeName'] = forms.ChoiceField(label='Node Name',choices=functions.choiceMaker(functions.nodesList(nodeName)))