Работа над сценарием регистрации пользователя низкой интенсивности. В части скрипта проверки ошибок (которая фактически просто проверяет, чтобы убедиться, что поля не оставлены пустыми), функция "addressError" работает без каких-либо проблем.
Но если я попытаюсь создать ошибки в любом другом поле, сценарий прекратит работу. Надеюсь, кто-нибудь увидит, что мне не хватает?
Что работает:
def check_address(user, formdata):
if formdata.has_key("streetAddress") and formdata["streetAddress"].value != "":
streetAddress = formdata["streetAddress"].value
return streetAddress
else:
addressError(user, formdata)
def addressError(user, formdata):
feedback = {"blank_address" : "Please enter a valid street address! We won't mail you anything you don't order. Promise."}
stepTwoError(user, formdata, "blank_address", feedback)
Что не работает:
def check_city(user, formdata):
if formdata.has_key("city") and formdata["city"].value != "":
city = formdata["city"].value
return city
else:
cityError(user, formdata)
def cityError(user, formdata):
feedback = {"blank_city" : "Please enter a city!"}
stepTwoError(user, formdata, "blank_city", feedback)
def check_state(user, formdata):
if formdata.has_key("state") and formdata["state"].value != "":
state = formdata["state"].value
return state
else:
stateError(user, formdata)
def stateError(user, formdata):
feedback = {"blank_state" : "Please enter a state!"}
stepTwoError(user, formdata, "blank_state", feedback)
EDIT:
Код, который вызывает эти методы:
def get_stepTwoData(user, formdata):
firstName, lastName = check_name(user, formdata)
streetAddress = check_address(user, formdata)
city = check_city(user, formdata)
state = check_state(user, formdata)
zipCode = check_zipCode(user, formdata)
return firstName, lastName, streetAddress, city, state, zipCode
и в основном:
if regStep == "2":
firstName, lastName, streetAddress, city, state, zipCode = get_stepTwoData(user, formdata)
make_step3(user, regStep, firstName, lastName, streetAddress, city, state, zipCode, formdata)
Насколько мне известно, эти три блока абсолютно одинаковы, причем "адрес", "штат" и "город" используются взаимозаменяемо. Фактически, я мог бы написать функцию for, чтобы охватить все три из них одновременно. Так почему же два из них не работают?
(Примечание: я не включаю функцию stepTwoError (), потому что я знаю, что она работает, поскольку она работает после вызова addressError - поскольку эта функция не меняется, я знаю, что она работает Поэтому я могу только предположить, что проблема заключается в размещенных блоках.)
Если я генерирую данные без ошибок, скрипт выполняется просто отлично, поэтому я знаю, что при чтении данных из формы ошибок нет. Все переменные возвращаются на следующей странице без проблем.
Это мучает меня уже несколько дней. Я просто не понимаю Я надеюсь, что какая бы проблема ни была, я чувствую себя действительно глупо из-за ее простоты.
Спасибо!
РЕДАКТИРОВАТЬ: Хорошо, ошибка, кажется, в моем HTML. Я не выяснил, что именно в скрипте вызывает ошибку, но в HTML все формы являются «input type = 'text' name = '[name]'», кроме поля адреса, которое является «input type =» text '"- эти лишние пробелы что-то напутали, понятно.
Спасибо тем, кто ответил терпеливо, и да, я переписал код, чтобы быть более внимательным с меньшими возможностями ошибок транскрипции.
-Tom