Простой калькулятор арктангенса на Django
пишу простой калькулятор, есть два поля в форме первое и второе значение, нужно на страничку вывести результат вычислений, не пойму что написать в функции после валидации полей формы я получаю словарь cleaned_data но переменные num_1 и num_2 не резолвятся, хотя введённые данные в форму там есть в этих переменных:
\views.py
def Atan(request):
form = AtanForm()
if request.method == 'get':
form = AtanForm(request.GET)
if form.is_valid():
form = form.cleaned_data
out_atan = round(math.degrees(math.atan((num_1 / num_2))), 5)
out_cos = round(math.cos(out_atan * math.pi / 180), 5)
out_result = round((num_2 / out_cos), 5)
return render(request, 'landb/atan_convert.html', {
'form': form,
'out_atan': out_atan,
'out_cos': out_cos,
'out_result': out_result
})
\forms.py
class AtanForm(forms.Form):
num_1 = forms.IntegerField(label='Первое значение',
widget=forms.NumberInput(attrs={
'class': 'form-control',
'placeholder': 'Введите первое значение'
}))
num_2 = forms.IntegerField(label='Второе значение',
widget=forms.NumberInput(attrs={
Ответы (2 шт):
Автор решения: Za Ars
→ Ссылка
num_1 и num_2 во первых находятся в форме. а где где то там, а во вторых в словаре form.cleaned_data.
Пример получения num_1 = form.cleaned_data['num_1']
UPD: Примерный вариант, который должен работать
context = {}
if request.method == 'GET':
form = AtanForm(request.GET)
if form.is_valid():
num_1 = form.cleaned_data['num_1']
num_2 = form.cleaned_data['num_2']
out_atan = context['out_atan'] = round(math.degrees(math.atan((num_1 / num_2))), 5)
out_cos = context['out_cos'] = round(math.cos(out_atan * math.pi / 180), 5)
out_result = context['out_result'] = round((num_2 / out_cos), 5)
else:
error = context['error'] = 'Data wrong!!!'
context.update({
'form': form
})
return render(request, 'landb/atan_convert.html', context)
Автор решения: Денис Корсачёв
→ Ссылка
Вопрос решился:
def Atan(request):
form = AtanForm()
out_atan = ''
out_cos = ''
out_result = ''
error = ''
if request.method == 'GET':
form = AtanForm(request.GET)
if form.is_valid():
num_1 = form.cleaned_data['num_1']
num_2 = form.cleaned_data['num_2']
out_atan = round(math.degrees(math.atan((num_1 / num_2))), 5)
out_cos = round(math.cos(out_atan * math.pi / 180), 5)
out_result = round((num_2 / out_cos), 5)
else:
error = 'Data wrong!!!'
return render(request, 'landb/atan_convert.html', {
'form': form,
'out_atan': out_atan,
'out_cos': out_cos,
'out_result': out_result,
'error': error
})