Локальная переменная, на которую ссылаются до назначения - PullRequest
4 голосов
/ 29 августа 2011

Мне было интересно, если вы, ребята, могли бы помочь.Я пытаюсь сделать простое представление, где он отправляет пользователя в форму создания клиента, но я продолжаю получать эту ошибку:

локальная переменная 'форма', на которую ссылаются до назначения

Глядя на мой код, я не вижу, что не так.

def add_client(request):
    user = request.user
    if request.method =='POST':
        form = AddClientForm(request.POST)
        if form.is_valid():
            client = form.save(commit=False)
            client.save()
            return HttpResponseRedirect('/')
        else:
            form = AddClientForm()

    return render_to_response('clients/addClient.html', { 'form': form, 'user': user, }, context_instance=RequestContext(request))

Кто-нибудь подскажет, где я ошибся?

Ответы [ 2 ]

13 голосов
/ 29 августа 2011

Вот что происходит:

  1. Блок if не вводится.
  2. Переменная form не определена.
  3. Затем вы пытаетесь сослаться на переменную form в операторе return.

Что касается того, как это исправить, это действительно решать вам. В чем заключается исправление, зависит от того, что вы хотите, чтобы ваш код делал, если метод запроса не POST.

7 голосов
/ 29 августа 2011

Вы почти наверняка захотите сделать отступ в этой части:

else:
    form = AddClientForm()

То есть на начальном GET страницы используйте пустую форму клиента, затем, когда страница отправлена, используйте запросДанные POST для заполнения объекта формы.

...