1

というわけでちょっと困ってます。特定のモデルの URL にアクセスしようとすると、404 が返されます。

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

したがって、上部の URL はrewards/amazon-gift card のようなものになり、下部の URL はrewards/amazon のようなものになります (Amazon が提供するすべてのギフトカードを表示するため)。報酬の URL は期待どおりに機能しますが、下部の URL にアクセスしようとすると 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

何が起きてる?

4

1 に答える 1

5

2 つのビューのパターンは同一であるため、CompanyDetailビューを呼び出すことはできません。代わりに、 for のパターンはRedeemRewardすべてのスラッグに一致し、モデル クラスが何であれ一致しないスラッグに対して 404 を発生させます。(おそらくReward.) 会社の URL と報酬の URL を区別するために、URL に何かを入れます。

于 2013-12-29T01:17:13.663 に答える