我要疯了。
根据Django调试器,我请求的模式没有反向匹配,但它与urls.py中的URL路径完全相同,并且我将对象id作为所需的参数传递。
会议/锻炼/4/更新/
NoReverseMatch
在没有找到参数的情况下,反向表示“exercise_update”。尝试1种模式:[‘会话/锻炼/(?P0-9+)/update/$’]
模板绘制过程中的错误
这是我的html
<button><a href="{% url 'sessions:exercise_update' exercise.id %}">Update exercise</a></button>这是我的URL路径
path('exercise/<int:pk>/update/', MyExerciseUpdate.as_view(), name='exercise_update'),视图只是一个通用的更新视图。
class MyExerciseUpdate(LoginRequiredMixin, UpdateView):
model = Exercise
fields = ['my_fields']我尝试过显示exercise.id,只是为了看看它是否存在,它确实存在。为什么没有争论呢?
另外,我在另一个页面中使用这个路径作为详细视图,并且它工作得很好。
<a href="{% url 'sessions:exercise_detail' exercise.id %}">{{ exercise.name }}</a>救命求你了。
这是我的整个urls.py文件
from django.urls import path, include
from sessions.views import RoutineList, RoutineDetail, ExerciseDetail, SessionCreate, SessionDetail, ExerciseUpdate
from django.conf.urls.static import static
from django.conf import settings
app_name = 'sessions'
urlpatterns = [
path('all_routines/', RoutineList.as_view(), name='routine_list'),
path('routine/<int:pk>/', RoutineDetail.as_view(), name='routine_detail'),
path('exercise/<int:pk>/detail', ExerciseDetail.as_view(), name='exercise_detail'),
path('exercise/<int:pk>/update/', ExerciseUpdate.as_view(), name='exercise_update'),
path('new/', SessionCreate.as_view(), name='session_create'),
path('detail/<int:pk>/', SessionDetail.as_view(), name='session_detail'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)发布于 2021-10-11 13:15:28
问题在表单的html中。表单的url缺少exercise.id参数,因此它抛出了无参数错误:
<form action="{% url 'sessions:exercise_update' %}" method="post">解决方案:
<form action="{% url 'sessions:exercise_update' exercise.id %}" method="post">现在看起来很傻,但我花了很长时间才弄清楚问题出在哪里。
https://stackoverflow.com/questions/69497386
复制相似问题