Django中两个模型的一个url模式
Django中的两个模型可以有一个url模式吗 我有两种模式:游戏和分类,我希望这两种模式都有一个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
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