def quadratic_results(request): discr = 'Дискриминант: %d' dis_less_null = 'Дискриминант меньше нуля, квадратное уравнение не имеет действительных решений.' dis_eq_null = 'Дискриминант равен нулю, квадратное уравнение имеет один действительный корень: x1 = x2 = %s' two_roots = 'Квадратное уравнение имеет два действительных корня: x1 = %s, x2 = %s' empty_str = '' comment_dsc = empty_str comment_result = empty_str if request.GET: form = QuadraticForm(request.GET) if form.is_valid(): got_data = form.cleaned_data qe = QuadraticEquation(got_data) dsc = qe.get_discr() if dsc > 0: x1 = qe.get_eq_root() x2 = qe.get_eq_root(order=2) comment_dsc = discr % dsc comment_result = two_roots % (round(x1,1), round(x2,1)) elif dsc < 0: comment_dsc = discr % dsc comment_result = dis_less_null elif dsc == 0: x1 = qe.get_eq_root() comment_dsc = discr % dsc comment_result = dis_eq_null % round(x1,1) else: form = QuadraticForm(request.GET) else: form = QuadraticForm() site_view = { 'comment_discr': comment_dsc, 'comment_result': comment_result, 'form': form,} return render(request, 'quadratic/results.html', site_view)
def quadratic_results(request): a = request.GET['a'] b = request.GET['b'] c = request.GET['c'] not_spec = 'коэффициент не определен' not_int = 'коэффициент не целое число' not_null = 'коэффициент при первом слагаемом уравнения не может быть равным нулю' discr = 'Дискриминант: %d' dis_less_null = 'Дискриминант меньше нуля, квадратное уравнение не имеет действительных решений.' dis_eq_null = 'Дискриминант равен нулю, квадратное уравнение имеет один действительный корень: x1 = x2 = %s' two_roots = 'Квадратное уравнение имеет два действительных корня: x1 = %s, x2 = %s' empty_str = '' form = QuadraticForm() print request.POST if request.method == 'POST': # create a form instance and populate it with data from the request: form = QuadraticForm(request.POST) # check whether it's valid: if form.is_valid(): print 'is valid' # process the data in form.cleaned_data as required # ... # messages for success form data: #messages.success(request, 'Form is saved!') # redirect to a new URL: #return redirect('/thanks/') # redirect возвращает код 302 вместо 200 # if a GET (or any other method) we'll create a blank form else: form = QuadraticForm(request.GET) if form.is_valid(): print 'Get is valid' else: form = QuadraticForm(request.GET) site_view = { 'head_line': 'Квадратное уравнение a*x*x + b*y + c = 0', 'a_str': 'a = %s' % a, 'comment_a': empty_str, 'b_str': 'b = %s' % b, 'comment_b': empty_str, 'c_str': 'c = %s' % c, 'comment_c': empty_str, 'comment_discr': empty_str, 'comment_result': empty_str, 'form': form, } def chk_gigit(d='', dig=False): if not d: ret = not_spec elif not re.match(r'^-?\d+', d): ret = not_int else: ret = empty_str dig = True return [ret, dig] def chk_gigit_a(a='', dig=False): if a.isdigit() and int(a) == 0: ret = not_null dig = False else: ret = chk_gigit(a)[0] dig = chk_gigit(a)[1] return [ret, dig] if chk_gigit_a(a)[1] and chk_gigit(b)[1] and chk_gigit(c)[1]: qe = QuadraticEquation(int(a), int(b), int(c)) dsc = qe.get_discr() site_view['comment_discr'] = discr % dsc if dsc < 0: res_mes = dis_less_null else: x1 = qe.get_eq_root() print x1 x2 = qe.get_eq_root(order=2) print x1 if x1 == x2: res_mes = dis_eq_null % round(x1,1) else: res_mes = two_roots % (round(x1,1), round(x2,1)) site_view['comment_result'] = res_mes else: site_view['comment_a'] = chk_gigit_a(a)[0] site_view['comment_b'] = chk_gigit(b)[0] site_view['comment_c'] = chk_gigit(c)[0] return render(request, 'quadratic/results.html', site_view)