我是新来姜戈的。在构建应用程序时,我一直收到NoReverseMatch。我想知道是否有人能给我指出正确的方向,指出我哪里错了。
该应用程序有场景,每个场景都有关联的电子邮件。当我点击一个场景时,应用程序会显示与该场景关联的电子邮件,允许用户删除/编辑每个关联的电子邮件。
当我尝试删除一封电子邮件时,如果我将success_url设置为email : NoReverseMatch,我会收到一个索引,该索引为该场景生成了电子邮件列表。如果我将success_url更改为主屏幕(场景:索引),它可以工作,但是让用户转到主屏幕列出每次删除的场景并不理想。
以下是我的电子邮件数据源的url模式
# emails
# /scenarios/<scenarioid>/email
url(r'^(?P<pk>[0-9]+)/email/$', views.EmailListView.as_view(), name='email-index'),
# /scenarios/12/email/<emailid>/delete
url(r'^([0-9]+)/email/(?P<pk>[0-9]+)/delete/$', views.EmailDelete.as_view(), name='email-delete'),
这是我的视图文件:
class EmailDelete(DeleteView):
model = Email
success_url = reverse_lazy('scenarios:email-index')
class EmailListView(generic.ListView):
model = Email
template_name = 'scenarios/emailindex.html'
context_object_name = 'scenario_emails'
print "in email list view"
def get_queryset(self):
return Email.objects.filter(scenario=self.kwargs['pk'])
模板如下:
<td><form action="{% url 'scenarios:email-delete' email.id %}" method="post">
{% csrf_token %}
发布于 2016-08-01 12:14:12
email-delete
URL有两个捕获组-一个未命名的([0-9]+)
和一个命名的(?P<pk>[0-9]+)
,但在url
标记中只传递位置参数- email.id
。您必须从url模式中删除第一个组,或者将两个参数传递给url
标记。类似这样的{% url 'scenarios:email-delete' scenario.id pk=email.id %}
。
https://stackoverflow.com/questions/38688793
复制相似问题