Найти - Пользователи
Полная версия: Валидация формы
Начало » Django » Валидация формы
1 2 3
ciklone
Есть форма с тремя полями - длины сторон треугольника. Если не выполняется условие, что сууммы двух любых сторон должны быть больше третей, выдать на форму ошибку и попросить повторить ввод. Пошел таким путем:

#! /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. Кто сталкивался, подскажите.
FishHook
ciklone
что нужно импортировать из Django.core.
зачем что-то импортировать?
ciklone
FishHook
Дык не работает! вот тут вычитал: Your text to link here…
FishHook
ciklone
Дык не работает!
Когда что-то не работает, обязательно нужно что-нибудь импортировать чтоб заработало? Чувствуется крепкий логик.
ciklone
FishHook
Верю, а куда копать?
FishHook
Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?
ciklone
FishHook
Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?
Не проходит проверка. При введенных неверных данных форма не ругается.
FishHook
Ну ок,
if ab+bc <= ac and ab+ac <= bc and bc+ac <= ab:

в этой строке вы проверяете что три условия одновременно должны выполняться
если условие1 И условие2 И условие3:
ошибка
однако, все эти три условия одновременно не могут выполниться никогда хоть импортируй всю Библиотеку Конгресса.
ciklone
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")
FishHook
В вашем варианте:
если две стороны меньше третьей И две другие стороны меньше третьей И
В правильном варианте:
если две стороны меньше третьей ИЛИ две другие стороны меньше третьей ИЛИ
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB