我已经阅读了关于stackoverflow的一些答案,但是在下面的代码中看不到任何错误。从我的观点来看,应该没有任何理由使它不起作用,而且我查阅了说明该语法应该使用的文档。但是,我仍然收到“ No ReverseMatch”,所以出了点问题。
我有以下urls.py条目:
url(r'^portfolio/profile/(?P<profile_id>[0-9]+)$', views.portfolio_view_profile, name='view_investment_profile')
然后我有以下基于类的视图:
class PortfolioDividendEdit(PortfolioEditBase):
model = Dividend
form_class = DividendForm
template_name = 'plan/portfolio/edit/dividend_edit.html'
def form_valid(self, form):
if "delete" in self.request.POST:
div_obj = Dividend.objects.get(id=self.kwargs['dividend_id'])
profile_id = div_obj.profile_id
# obj.delete()
return HttpResponseRedirect(reverse('plan:view_investment_profile'), kwargs={'profile_id': profile_id})
def get_context_data(self, **kwargs):
context = super(PortfolioEditBase, self).get_context_data(**kwargs)
dividend_obj = Dividend.objects.get(id=self.kwargs['dividend_id'])
profile = Profile.objects.get(id=dividend_obj.profile_id)
context['post_req'] = self.post_req
context['profile'] = profile
context['dividend_id'] = self.kwargs['dividend_id']
return context
def get_object(self, queryset=None):
obj = Dividend.objects.get(id=self.kwargs['dividend_id'])
return obj
def get_success_url(self):
dividend_obj = Dividend.objects.get(id=self.kwargs['dividend_id'])
profile_id = dividend_obj.profile_id
return reverse(self.url_name, args=[profile_id])
我本来打算将其反转为DeleteView,但随后仅用四行代码即可删除对象,因此为什么还要为此创建一个额外的视图呢?话虽这么说,我已经创建了DeleteView类,但是在那里也出现了相同的错误(没有ReverseMatch)以及一堆我不理解的其他不同的反向错误。
无论如何,以下行是问题所在:
return HttpResponseRedirect(reverse('plan:view_investment_profile'), kwargs={'profile_id': profile_id})
此行出现以下错误:
Reverse for 'view_investment_profile' with no arguments not found. 1 pattern(s) tried: [u'plan/portfolio/profile/(?P<profile_id>[0-9]+)$']
请注意,由于我目前不希望删除对象,因此我已将delete()调用注释掉。
如您所见,我已经为适当的视图提供了必要的关键字参数,该参数将被带到该视图,但它仍然给我一个“ No ReverseMatch”错误。
对此有何想法?