Python Django-如何分别编辑和提交多个表单,然后返回到同一页面?

Python Django-如何分别编辑和提交多个表单,然后返回到同一页面?,python,django,forms,logic,Python,Django,Forms,Logic,因此,我正在构建这个学习日志应用程序,用户可以在其中创建多个主题。我正在尝试创建一个页面,用户可以在其中编辑/保存更改/删除他们的主题名称。我在edit_topic查看功能中的逻辑是,使用save和delete按钮以表格形式显示原始主题,代码如下或随意检查: views.py def edit_主题(请求,主题主键=None): ''编辑现有主题,主要是名称'' #根据请求方法和名称修改模型数据 如果request.method=='POST'和topic_pk!=无: 如果在request.P

因此,我正在构建这个学习日志应用程序,用户可以在其中创建多个主题。我正在尝试创建一个页面,用户可以在其中编辑/保存更改/删除他们的主题名称。我在
edit_topic
查看功能中的逻辑是,使用
save
delete
按钮以表格形式显示原始主题,代码如下或随意检查:

views.py

def edit_主题(请求,主题主键=None):
''编辑现有主题,主要是名称''
#根据请求方法和名称修改模型数据
如果request.method=='POST'和topic_pk!=无:
如果在request.POST中“保存”:
topic_to_change=获取对象或_404(topic,pk=topic_pk)
form=TopicForm(实例=topic\u to\u change,数据=request.POST)
如果form.is_有效():
form.save()
elif request.POST中的“delete”:
topic_to_delete=获取对象_或_404(topic,pk=topic_pk)
主题_to_delete.delete()
返回重定向(“学习日志:编辑主题”)
#获取传递到渲染的原始/修改的数据
topics=Topic.objects.all()
主题_lst=[]
对于主题中的主题:
表单=主题表单(实例=主题)
主题附加(表格)
上下文={'topics':主题,'topic'lst':主题}
返回呈现(请求“学习日志/编辑主题.html”,上下文)
编辑_topics.html

{%extends'learning\u logs/base.html%}
{%block content%}
您创建的主题
    {主题中表格的百分比}
  • {%csrf_令牌%} {{form.as_p}} 拯救 删除
  • {%endfor%}
{%endblock内容%}
url.py

从django.url导入路径
从…起导入视图
app_name=“学习日志”
URL模式=[
路径(“”,views.index,name='index'),
路径('topics/',views.topics,name='topics'),
路径('topics/edit/',views.edit_topics,name='edit_topics'),
路径('new\u topic/',views.new\u topic,name='new\u topic'),
路径('topic/',views.topic,name='topic'),
路径('topic\u/new\u entry/',views.new\u entry,name='new\u entry'),
路径('topic\u/entry\u/',views.entry,name='entry'),
路径('topic\u/entry\u/edit\u entry/',views.edit\u entry,name='edit\u entry'),
]
但是,我认为可能存在一些逻辑错误,它不断引发
NoReverseMatch(msg)django.url.exceptions.NoReverseMatch:Reverse for'edit_topics'with arguments'(1,)'未找到。尝试了1个模式:[“主题/编辑$”]

如果我在
edit_topics.html
文件中删除
form.instance.pk
,则不会引发错误。但是因此,视图函数中的
if
逻辑不会采取行动。。。我对编程相当陌生,我肯定也有一些逻辑错误--

我正在视图函数中处理
topic\u pk
可选参数,因为我不确定如何正确地传递它

理想情况下,我希望用户可以逐个编辑、保存或删除此页面上的主题,单击
save
delete
后,页面将重定向回此视图并呈现更新的主题文本。最后,完成后,他们可以单击末尾的
done
按钮

请帮忙!谢谢


请随意检查

更新您的url,如下所示:

path('topics/edit/', views.edit_topics, name='edit_topics'),
path('topics/edit/<int:topic_pk>/', views.edit_topics, name='edit_topic'),
path('topics/edit/',views.edit_topics,name='edit_topics'),
路径('topics/edit/',views.edit_topics,name='edit_topic'),
在html中,更改此行:

<form class="d-flex align-items-center" action="{% url 'learning_logs:edit_topic' form.instance.pk %}" method="POST">
                                                                     ^^^^^^^^^^^

^^^^^^^^^^^

在这里,我所做的是,有两个URL指向同一个视图,一个带有
topic\u pk
,另一个没有它

欢迎来到SO。还请包括您的
url.py
。问题与url模式有关。感谢您的快速回复<代码>url.py已添加。谢谢您的回复,但我尝试了您的解决方案,
topics/
为“编辑主题”提示
反向,但未找到任何参数。尝试了1种模式:[“topics/edit/(?P[0-9]+)$”]
这似乎使问题更加严重。。。因为之前这个页面可以正常显示。在
topics/
页面上显示许多主题,在
topics/edit/
页面上显示许多表单,供用户编辑、保存更改和删除。Urrgggg沮丧的工作就像一个魅力!!!布里尔!!非常感谢@ruddraOh抱歉@ruddra,你能看看视图函数中的逻辑吗?“删除”按钮正在工作,但“保存”按钮不会保存编辑的内容,而是重新呈现原始主题文本…哦,对了,明白了。。。保存按钮的错误名称
save
应该是
name=“save”
!干杯,伙计!