Хотя этот вопрос довольно старый, так как я столкнулся с той же проблемой (и только что решил ее), я думаю, что я должен ответить на нее для будущих ссылок. Но тогда у меня была другая ошибка. Но вы, кажется, что-то упустили в своем коде.
def refer(request, seek_id):
seek_obj = SeekSolutions.objects.get(pk = seek_id)
if request.method == 'POST':
form = SeekReferForm(request.POST)
if form.is_valid():
obj = form.save(commit = False)
obj.refferer = request.user
obj.seek_id = seek_obj
obj.save()
send_message(obj)
return HttpResponseRedirect('/seek/referred')
else:
form = SeekReferForm()
return render_to_response('seek/refer.html', {'form' : form , } )
Сюда входит блок else
до вашего первого if
. Это потому, что когда вы пытаетесь получить доступ к URL-адресу из браузера, вы, по сути, делаете запрос GET
к ресурсу. В результате первый if нарушается и напрямую попадает в оператор return
, где он пытается вернуть элемент словаря с 'form'
в качестве объекта key
и form
, который вообще никогда не создавался. Таким образом, ошибка в вашем коде. Должна быть еще одна часть, которая должна создавать экземпляр объекта form
на случай, если вы попытаетесь открыть URL в вашем браузере. Я надеюсь, что это помогает делу.