所以我遇到了一些麻烦。当我尝试访问某个模型的网址时,我得到了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
这里发生了什么?
答案 0 :(得分:5)
两个视图的模式是相同的,因此永远不会调用CompanyDetail
视图。相反,RedeemReward
的模式匹配所有slug并为不匹配其模型类的slug引发404。 (可能是Reward
。)在网址中添加一些内容,以区分公司网址和奖励网址。