Reputation: 97
I want to create a user registration form in django by following django tutorial part 15. However, here's an error that is on my way. My views.py is
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render,redirect
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/polls')
else:
form = UserCreationForm()
args = {'form': form}
return render(request, 'polls/reg_form.html', args)
And, it is giving an error.
The view polls.views.register didn't return an HttpResponse object. It returned None instead.
Upvotes: 2
Views: 61
Reputation: 1589
Because your conditional only checks for POST
request, and GET
request returns None
by default as no return value is specified if request.method != 'POST'
.
Your code indentation is wrong, I assume, it should be:
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render,redirect
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/polls')
else:
form = UserCreationForm()
args = {'form': form}
return render(request, 'polls/reg_form.html', args)
Also, None
is being returned if invalid form is POST
'ed. To resolve that you could simply do this:
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render,redirect
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/polls')
else:
form = UserCreationForm()
# These lines will be executed if the request method is not POST or form is invalid
args = {'form': form}
return render(request, 'polls/reg_form.html', args)
Upvotes: 2