Redirect to login page without losing content of form

187 views
Skip to first unread message

Jan Gregorczyk

unread,
May 27, 2020, 9:58:22 AM5/27/20
to Django users
I want answer to be added if user is logged in otherwise redirect user to login page, let him login and then add his answer. My problem is that I lose content of the form.
At the moment I'm getting this errror:
The view questions.views.answer didn't return an HttpResponse object. It returned None instead.


def question(request, question_id):
question = get_object_or_404(Question, pk=question_id)
form = AnswerForm()
return render(request, 'questions/question.html', {'question': question, 'form' : form},)

@login_required
def answer(request, question_id):
question = get_object_or_404(Question, pk=question_id)
form = AnswerForm(request.POST) if request.method == 'POST' else AnswerForm()
if form.is_valid():
answer = form.save(commit=False)
answer.author = request.user
answer.question = question
answer.save()
return HttpResponseRedirect(reverse('question', args=(question.id,)))



<form method="POST" action="{% url 'answer' question.id %}">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Odpowiedz">
</form>

form method="post" action="{% url 'login' %}">
{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="next" value="{{request.GET.next}}" />
<input type="submit" value="login" />
</form>

Kasper Laudrup

unread,
May 27, 2020, 10:15:29 AM5/27/20
to django...@googlegroups.com
Hi Jan,

On 27/05/2020 14.01, Jan Gregorczyk wrote:
> At the moment I'm getting this errror:
>
> The view questions.views.answer didn't return an HttpResponse object. It returned None instead.
>

Consider what will happen if the form is *not* valid, ie. this statement
returns false:

if form.is_valid():

Remember that functions in Python without an explicit return will
implicitly return None.

That should hopefully make it clear.

Kind regards,

Kasper Laudrup

Jan Gregorczyk

unread,
May 27, 2020, 10:42:51 AM5/27/20
to Django users
Ok. Now I've dealt with this returned None problem, but I still have no idea what to do to keep my form content after clicking submit button. Does next parmeter generated by login_required contain only link or also form content?
Reply all
Reply to author
Forward
0 new messages