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

Django中两个模型的一个url模式,django,django-models,django-views,Django,Django Models,Django Views,Django中的两个模型可以有一个url模式吗 我有两种模式:游戏和分类,我希望这两种模式都有一个url模式: ios-games/category_name 及 所以分类模式应该放在第一位,若slug不在那个里,它应该检查游戏模式 是否可以不为这两个模型创建一个大视图 不幸的是,url.py中的路径顺序不起作用,如果它在第一个模式中找不到对象,它就不会进一步查找…我认为没有办法说您希望继续从视图中查看url。但是,您可以创建一个调用正确视图的视图。我以前做过类似的事情。比如: class G

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

我有两种模式:游戏和分类,我希望这两种模式都有一个url模式:

ios-games/category_name

所以分类模式应该放在第一位,若slug不在那个里,它应该检查游戏模式

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


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

我认为没有办法说您希望继续从视图中查看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

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

非常感谢您的提示。我使用了一些不同的逻辑,但是重写dispatch()方法的想法对我有所帮助。
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