Представление account.views.updatedata не возвращало объект HttpResponse. Вместо этого оно вернуло None
У меня проблема с кнопкой обновления, и она показывает эту ошибку, когда я нажимаю кнопку обновления, она должна перенаправить меня на следующую страницу, где сотрудники могут обновить детали, как мне исправить эту ошибку, чтобы она могла перенаправить меня на следующую страницу, где она покажет формы для сотрудников, чтобы обновить детали
Ниже показана ошибка (Traceback error):
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/updatedata/17/
Django Version: 3.1.4
Python Version: 3.8.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'account.apps.AccountConfig',
'crispy_forms',
'channels']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django_session_timeout.middleware.SessionTimeoutMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\TAY\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\TAY\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 186, in _get_response
self.check_response(response, callback)
File "C:\Users\TAY\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 307, in check_response
raise ValueError(
Exception Type: ValueError at /updatedata/17/
Exception Value: The view account.views.updatedata didn't return an HttpResponse object. It returned None instead.
views.py
@login_required()
def updatedata(request, id):
photo = get_object_or_404(Photo, id=id)
if request.method == 'POST': # check for the post request body
form = UpdateForm(request.POST)
if form.is_valid():
form.save()
return redirect('/logdata')
else:
msg = 'form is not valid' # Show an error message if the form is not valid
else:
form = UpdateForm()
context = {
"form": form,
"photo": photo
}
return render(request, 'updatedata.html', context)
logdata.html
<form action="{% url 'updatedata' photo.id %}" method="post">
{% csrf_token %}
<button type="submit" class="btn btn-sm btn-info">Update</button>
</form>
forms.py
class UpdateForm(forms.ModelForm):
mcoNum = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
reception = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
partno = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
serialno = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
Customername = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
class Meta:
model = Photo
fields = ("mcoNum", "reception", "partno", "serialno")
def __init__(self, *args, **kwargs):
super(UpdateForm, self).__init__(*args, **kwargs)
self.fields['mcoNum'].required = False
self.fields['reception'].required = False
self.fields['partno'].required = False
self.fields['serialno'].required = False
измените свой взгляд на этот
views.py
@login_required()
def updatedata(request, id):
photo = get_object_or_404(Photo, id=id)
if request.method == 'POST' and 'update_staff_page' not in request.POST: # check for the post request body
form = UpdateForm(request.POST)
if form.is_valid():
form.save()
return redirect('/logdata')
else:
msg = 'form is not valid' # Show an error message if the form is not valid
else:
form = UpdateForm()
context = {
"form": form,
"photo": photo
}
return render(request, 'updatedata.html', context)
и ваш шаблон в этом
logdata.html
<form action="{% url 'updatedata' photo.id %}" method="post">
{% csrf_token %}
<button type="submit" name="update_staff_page" class="btn btn-sm btn-info">Update</button>
</form>
Я думаю, вы не совсем ясно выразились, если пост не отправляет никаких данных о методе, который вы отправляете