【发布时间】:2020-10-23 15:52:39
【问题描述】:
我在更新 DetailView 时遇到问题,因此一旦我尝试提交更新的值,我就会在 /task/164/ 处收到错误 NoReverseMatch。你能告诉我有什么问题吗?
谢谢!
网址:
path('excel_upload', ex_views.ExcelUploadView.as_view(), name='excel-upload'),
path('user_list', ex_views.UsersListView.as_view(), name = "user-list"),
path('excel_table', ex_views.ExcelTableView.as_view(), name = "excel-table"),
path("task/add", ex_views.TaskAddView.as_view(), name="task-add"),
path("task/<int:pk>/", ex_views.TaskDetailView.as_view(), name="task-detail"),
forms.py
class AddEditTaskForm(forms.ModelForm):
class Meta:
model = Task
exclude = ['created_by']
widgets = {
"due_date": forms.DateInput(attrs={'type':'date'}),
"completed_date": forms.DateInput(attrs={'type': 'date'}),
"name":forms.TextInput(),
"note": forms.Textarea(),
}
views.py
class TaskDetailView(DetailView):
model = Task
template_name = "hana/task_detail.html"
# Add POST method
def post(self, request, pk):
task = get_object_or_404(Task, pk=pk)
form = AddEditTaskForm(request.POST, instance=task)
if "add_edit_task" in request.POST:
if form.is_valid():
form.save()
messages.success(request, "The task has been edited.")
return redirect('excel-table')
return render(request, 'hana/task_detail.html', {'form': form})
错误:
NoReverseMatch 在 /task/164/
未找到带有参数“(”,)“的“任务详细信息”的反向。尝试了 1 种模式:['task\/(?P[0-9]+)\/$']
请求方法:POST
请求网址:http://127.0.0.1:8000/task/164/
Django 版本:3.0.6
异常类型:NoReverseMatch
异常值:
未找到带有参数“(”,)“的“任务详细信息”的反向。尝试了 1 种模式:['task\/(?P[0-9]+)\/$']
异常位置:/home/lukasz/envtest2/lib/python3.6/site-packages/django/urls/resolvers.py 在_reverse_with_prefix,第677行
模板:
<form method="post" action="{% url 'task-detail' object.id %}" role="form" class="d-inline">
{% csrf_token %}
<div style="display:inline;">
<button class="btn btn-info btn-sm" type="submit" name="toggle_done">
{% if task.completed %} Mark Not Done {% else %} Mark Done {% endif %}
</button>
</div>
</form>
<a class="btn btn-danger btn-sm mt-1 mb-1" href={% url 'task-delete' object.id %}">Delete</a>
【问题讨论】:
-
我忘记在模板中显示我的提交按钮:
-
错误在您的
task_detail.html中。请编辑您的问题并发布该模板的来源。 -
我已经添加了肯定有问题的部分。有 2 个 btns 正在触发附加功能,我正在那里传递一个 object.id。一旦我将第一个操作设为空,问题就出在第二个操作上,即任务删除 btn。那么如何将这些 btns 保留在我的模板中并且不会出现反向匹配错误?
标签: django detailview