Django中两个模型的一个url模式

时间:2013-10-01 14:18:15

标签: django django-models django-views

是否可以在Django中为两个模型设置一个url模式?

我有两个模型:游戏和类别,我想要两个网址模式:

ios-games/category_name

ios-games/game_name

所以类别模式应该先行,如果没有slug,它应该检查游戏模式。

是否可以不为这两个模型创建一个大视图?

不幸的是,url.py中的路径顺序不起作用,如果它在第一个模式中找不到对象,它就不会进一步看...

1 个答案:

答案 0 :(得分:3)

我认为没有办法说你想继续浏览视图中的网址。但是,您可以创建一个调用正确视图的视图。我之前做过这样的事。类似的东西:

class GameCategoryFactory(View):
    def dispatch(self, request, *args, **kwargs):
        game_or_category_slug = kwargs.pop('slug')

        if Category.objects.filter(name=game_or_category_slug).count() != 0:
            return CategoryView.as_view()(request, *args, **kwargs)
        elif Game.objects.filter(name=game_or_category_slug).count() != 0:
            return GameView.as_view()(request, *args, **kwargs)
        else:
            raise Http404

当然,我正在使用基于类的视图。基于功能的方法应该非常简单。