是否可以在Django中为两个模型设置一个url模式?
我有两个模型:游戏和类别,我想要两个网址模式:
ios-games/category_name
和
ios-games/game_name
所以类别模式应该先行,如果没有slug,它应该检查游戏模式。
是否可以不为这两个模型创建一个大视图?
不幸的是,url.py
中的路径顺序不起作用,如果它在第一个模式中找不到对象,它就不会进一步看...
答案 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
当然,我正在使用基于类的视图。基于功能的方法应该非常简单。