Django - Значение исключения: локальная переменная «форма», на которую ссылаются перед присваиванием - PullRequest
0 голосов
/ 29 ноября 2018

В определении для сохранения поискового слова в форме я получил стек.Это определение дает ошибку «локальная переменная« форма », на которую ссылаются перед присваиванием».на линии (если form.is_valid () :).Я пытался изменить порядок, но безуспешно.Может быть, это очень просто для более опытных разработчиков.

def SearchCreateView(request):
    template_name = 'SearchCreateView_form.html'
    model = Search
    form_class = SearchCreateViewForm

    if request.method == 'POST':
        if form.is_valid():
            form = SearchCreateViewForm(request.POST or None, instance=search.user)
            print(form.errors.as_text())
            search = form.save(commit=False)
            form.instance.search.user = self.request.search.user
            return render_to_response(request, 'search.html', {'form': form})
        else:
            context = {'form': form}
            return render_to_response(request, 'save.html', context)
    else:
        form = SearchCreateViewForm(request.POST or None)
        return render(request, 'SearchCreateView_form.html', {'form': form})

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте добавить это, чтобы определить переменную формы:

def SearchCreateView(request):
    template_name = 'SearchCreateView_form.html'
    model = Search
    form_class = SearchCreateViewForm

    form = form_class(request.POST or None)  # ADD THIS

    if request.method == 'POST':
        if form.is_valid():
            form = SearchCreateViewForm(request.POST or None, instance=request.user)
            print(form.errors.as_text())
            search = form.save(commit=False)
            form.instance.search.user = request.user
            return render_to_response(request, 'search.html', {'form': form})
        else:
            context = {'form': form}
            return render_to_response(request, 'save.html', context)
    else:
        form = SearchCreateViewForm(request.POST or None)
            return render(request, 'SearchCreateView_form.html', {'form': form})
...