在为kwarg提供与urls.py

时间:2018-07-31 11:55:15

标签: python django python-2.7 django-views

我已经阅读了关于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”错误。

对此有何想法?

0 个答案:

没有答案