NoReverseMatch at /edit_record/1/
Решил изучить создание сайтов по одному учебнику и во время выполнения одного упражнения возникла такая проблема. При открытии страницы выдаёт это:
NoReverseMatch at /edit_record/1/
Reverse for 'edit_record' with arguments '('',)' not found. 1 pattern(s) tried: ['edit_record/(?P<record_id>[0-9]+)/\\Z']
Request Method: GET
Request URL: http://localhost:8000/edit_record/1/
Django Version: 4.2.4
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'edit_record' with arguments '('',)' not found. 1 pattern(s) tried: ['edit_record/(?P<record_id>[0-9]+)/\\Z']
Exception Location: C:\Users\user\.conda\envs\blog\Lib\site-packages\django\urls\resolvers.py, line 828, in _reverse_with_prefix
Raised during: my_blog.views.edit_record
Python Executable: C:\Users\user\.conda\envs\blog\python.exe
Python Version: 3.11.4
Python Path:
['C:\\Users\\user\\Desktop\\blog_project',
'C:\\Users\\user\\.conda\\envs\\blog\\python311.zip',
'C:\\Users\\user\\.conda\\envs\\blog\\DLLs',
'C:\\Users\\user\\.conda\\envs\\blog\\Lib',
'C:\\Users\\user\\.conda\\envs\\blog',
'C:\\Users\\user\\.conda\\envs\\blog\\Lib\\site-packages']
Reverse for 'edit_record' with arguments '('',)' not found. 1 pattern(s) tried: ['edit_record/(?P<record_id>[0-9]+)/\\Z']
url.py
:
from django.urls import path
from . import views
app_name = 'my_blog'
urlpatterns = [
path('', views.value, name='value'),
path('records/', views.records, name='records'),
path('edit_record/<int:record_id>/', views.edit_record, name='edit_record'),
path('create_record/', views.create_record, name='create_record')
]
edit_record.html
:
{% extends "my_blog/base.html" %}
{% block content %}
<p>Edit record:</p>
<form action="{% url 'my_blog:edit_record' record.id %}" method='post'>
{% csrf_token %}
{{ form.as_p }}
<button name="submit">save changes</button>
</form>
{% endblock content %}
views.py
:
def edit_record(request, record_id):
"""Редактирует существующую запись."""
blog_post = Blog_place.objects.get(id=record_id)
if request.method != 'POST':
# Исходный запрос; форма заполняется данными текущей записи.
form = Blog_placeForm(instance=blog_post)
else:
# Отправка данных POST; обработать данные.
form = Blog_placeForm(instance=blog_post, data=request.POST)
if form.is_valid():
form.save()
return redirect('my_blog:records', record_id=record.id)
context = {'blog_post': blog_post, 'form': form}
return render(request, 'my_blog/edit_record.html', context)
Источник: Stack Overflow на русском