网址未找到Django

时间:2013-12-29 01:14:54

标签: python django templates views urlconf

所以我遇到了一些麻烦。当我尝试访问某个模型的网址时,我得到了404:

url(r'^rewards/(?P<slug>[-\w]+)/$', RedeemReward.as_view(), name="reward"),
url(r'^rewards/(?P<slug>[-\w]+)/$', CompanyDetail.as_view(), name="company"),

所以顶部网址将是奖励/亚马逊礼品卡,而底部网址将是奖励/亚马逊(显示亚马逊所提供的所有礼品卡)。奖励网址按预期工作,但当我尝试访问底部网址时,我得到404。观点:

class CompanyDetail(DetailView):
    model = Company
    context_object_name = 'company'
    slug_field = 'company_slug'
    template_name = 'asdx/companies.html'

    def get_rewards(self):
    rewards = Reward.objects.filter(company=self.object)
    return rewards

    def get_context_data(self, **kwargs):
    context = super(CompanyDetail, self).get_context_data(**kwargs)
    context['rewards'] = self.get_rewards()
    return context

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

两个视图的模式是相同的,因此永远不会调用CompanyDetail视图。相反,RedeemReward的模式匹配所有slug并为不匹配其模型类的slug引发404。 (可能是Reward。)在网址中添加一些内容,以区分公司网址和奖励网址。