Django выдает ошибку при попытке доступа к странице регистрации
Django бросает мне следующее, когда я пытаюсь получить доступ к странице регистрации...
The view accounts.views.signup_view didn't return an HttpResponse object. It returned None instead.
Я думаю, что все было сделано правильно, но, видимо, django не согласен.
Signup.html
<h3>Register</h3>
<form method="POST" action="">
{% csrf_token %}
{{form.as_p}}
<input type="submit" name="Create User">
</form>
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('signup/', views.signup_view, name='signup'),
]
views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
# Create your views here.
def signup_view(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
context = {'form': form}
return render(request, 'signup.html', context)
Редактирование :
Если я удалю все из views.py и оставлю только
def signup_view(request):
form = UserCreationForm()
return render(request, 'signup.html', {'form': form})
Он позволяет мне зайти на страницу... но как только я пытаюсь добавить функцию сохранения, он выдает ошибку.
В первой строке signup_view у вас есть
if request.method == "POST":
Таким образом, если метод запроса не POST, представление возвращает None.
def signup_view(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('http://localhost:8000')
else:
form = UserCreationForm()
return render(request, 'signup.html', {'form': form})
Мне нужно было использовать перенаправление и сохранение, чтобы это сработало. но даже если этот вопрос был решен, все еще есть одна маленькая вещь
Моя домашняя страница существует под url ' ' (пустой) и я не могу перенаправить на нее, поэтому вместо этого используется localhost:8000, как я могу заменить его?