Представление не вернуло объект HTTPResponse
Я пытался создать приложение для блога, следуя онлайн-учебнику Django, и во время тестирования страницы регистрации я столкнулся с ошибкой Value Error, говорящей, что представление не возвращает объект ответа HTTP. Я перепробовал все, но не смог найти ответ, поскольку я не эксперт Django
в файле views.py пользовательского приложения был код, который выдавал ошибку
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
messages.success(request, f'Account Created for {username}')
return redirect('blog-home')
else:
form = UserCreationForm()
return render(request, 'users/register.html', {'form': form})
и это шаблон регистра
{% extends "myblog/base.html" %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">
Join Today!
</legend>
{{ form.as_p }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">
Sign Up!
</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
Already Have an account?
<a href="#" class="ml-2">Sign In!</a>
</small>
</div>
</div>
{% endblock content%}
А это файловая структура проекта Структура файла
Если у нас POST-запрос, и форма не действительна, вы ничего не возвращаете. Разверните вызов render
так:
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST, request.FILES)
if form.is_valid():
username = form.cleaned_data.get('username')
messages.success(request, f'Account Created for {username}')
return redirect('blog-home')
else:
form = UserCreationForm()
return render(request, 'users/register.html', {'form': form})
возвращайте что-то для регистра функции также, вы возвращаете только в условиях if else
Вы можете написать функцию следующим образом...
def register(request):
form = UserCreationForm()
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
messages.success(request, f'Account Created for {username}')
return redirect('blog-home')
else:
form.errors
context = {'form': form}
return render(request, 'users/register.html', context)