UnboundLocalError, локальная переменная обращалась до назначения, но не? - PullRequest
0 голосов
/ 06 декабря 2011

Я делаю что-то довольно простое в Django и получаю эту действительно странную ошибку:

UnboundLocalError at /me/profile/edit/
local variable 'form' referenced before assignment

Вот мой код:

if request.method == "POST":
    form = MyForm(request.POST)
    if form.is_valid():
        print "Yes"
else:
    form = MyForm(user=request.user)

Почему этот код выдает эту ошибку? Это довольно просто, но если я возьму материал if form.is_valid(), это сработает. Что не так?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Самое простое решение этой проблемы - удалить предложение else:

form = MyForm(request.POST or None)

if request.method == 'POST':
    if form.is_valid():
        print 'Yes'

Отличным примером этого является презентация Расширенного использования форм Django Дэнни Гринфельда: http://www.slideshare.net/pydanny/advanced-django-forms-usage (слайд 33 - это то, чтоЯ ссылаюсь конкретно).

2 голосов
/ 06 декабря 2011

Как написано, код выглядит правильно, так что я ожидаю, что что-то было потеряно при публикации вопроса (возможно, второе выражение if на самом деле не было отступом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...