Django 中的两个模型可以有一个 url 模式吗?
我有两个模型:游戏和类别,我想要这两个模型的 url 模式:
ios-games/category_name
和
ios-games/game_name
所以类别模式应该首先出现,如果 slug 不存在,它应该检查游戏模式。
是否可以不为这两个模型创建一个大视图?
不幸的是,路径顺序url.py
不起作用,如果它在第一个模式中找不到对象,它就不会继续寻找......
Django 中的两个模型可以有一个 url 模式吗?
我有两个模型:游戏和类别,我想要这两个模型的 url 模式:
ios-games/category_name
和
ios-games/game_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
当然,我使用的是基于类的视图。基于函数的方法应该非常简单。