Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 8, 2015 15:36:11

ciklone
Зарегистрирован: 2015-02-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация формы

Есть форма с тремя полями - длины сторон треугольника. Если не выполняется условие, что сууммы двух любых сторон должны быть больше третей, выдать на форму ошибку и попросить повторить ввод. Пошел таким путем:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
from django import forms
## проблема наверное тут
#++++++++++++++++++++++++++++++++++++++++++++
from django.core.exceptions import ValidationError
#==============================================
class triangle(forms.Form):
	##стороны треуголника
	
    ab = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника АВ:','value': 'ab',})) 
    bc = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника ВС:','value': 'bc',}))
    ac = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника АС:','value': 'ac',}))
    def clean(self):
        cleaned_data = super(triangle, self).clean()
        ab = cleaned_data.get("ab")
        bc = cleaned_data.get("bc")
        ac = cleaned_data.get("ac")
        ##if ab and bc and ac:
            # Only do something if both fields are valid so far.
        if ab+bc <= ac and ab+ac <= bc and bc+ac <= ab:
            raise forms.ValidationError("Ошибочные данные, сумма любых двух сторон треугльника должна быть больше третей стороны.")
        # Always return the full collection of cleaned data.
        return cleaned_data

Не могу найти инфу, что нужно импортировать из Django.core. Кто сталкивался, подскажите.

Офлайн

#2 Дек. 8, 2015 15:39:06

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Валидация формы

ciklone
что нужно импортировать из Django.core.
зачем что-то импортировать?



Офлайн

#3 Дек. 8, 2015 15:45:34

ciklone
Зарегистрирован: 2015-02-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация формы

FishHook
Дык не работает! вот тут вычитал: Your text to link here…

Отредактировано ciklone (Дек. 8, 2015 15:47:07)

Офлайн

#4 Дек. 8, 2015 15:48:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Валидация формы

ciklone
Дык не работает!
Когда что-то не работает, обязательно нужно что-нибудь импортировать чтоб заработало? Чувствуется крепкий логик.



Офлайн

#5 Дек. 8, 2015 15:51:05

ciklone
Зарегистрирован: 2015-02-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация формы

FishHook
Верю, а куда копать?

Офлайн

#6 Дек. 8, 2015 15:56:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Валидация формы

Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?



Офлайн

#7 Дек. 8, 2015 16:00:21

ciklone
Зарегистрирован: 2015-02-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация формы

FishHook
Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?
Не проходит проверка. При введенных неверных данных форма не ругается.

Офлайн

#8 Дек. 8, 2015 16:05:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Валидация формы

Ну ок,

if ab+bc <= ac and ab+ac <= bc and bc+ac <= ab:

в этой строке вы проверяете что три условия одновременно должны выполняться
если условие1 И условие2 И условие3:
ошибка
однако, все эти три условия одновременно не могут выполниться никогда хоть импортируй всю Библиотеку Конгресса.



Отредактировано FishHook (Дек. 8, 2015 16:06:22)

Офлайн

#9 Дек. 8, 2015 16:13:35

ciklone
Зарегистрирован: 2015-02-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация формы

FishHook
Ну ок,
тут Вы не правы, это стандартная проверка на то, является ли это треугольником. Запустите отдельно этот код;
import sys
a=None
b=None
c=None
a=float(input())
b=float(input())
c=float(input())
if a+b >c and a+c > b and b+c> a:
    print("triangle")
else:
    print("Not triangle")

Офлайн

#10 Дек. 8, 2015 16:17:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Валидация формы

В вашем варианте:
если две стороны меньше третьей И две другие стороны меньше третьей И
В правильном варианте:
если две стороны меньше третьей ИЛИ две другие стороны меньше третьей ИЛИ



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version