1

Django 中的两个模型可以有一个 url 模式吗?

我有两个模型:游戏和类别,我想要这两个模型的 url 模式:

ios-games/category_name

ios-games/game_name

所以类别模式应该首先出现,如果 slug 不存在,它应该检查游戏模式。

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

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

4

1 回答 1

3

我认为没有办法说您要继续从视图中查看 url。但是,您可以创建一个调用正确视图的视图。我以前做过这样的事情。就像是:

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

当然,我使用的是基于类的视图。基于函数的方法应该非常简单。

于 2013-10-01T14:40:33.190 回答