【问题标题】:One url pattern for two models in DjangoDjango 中两个模型的一个 url 模式
【发布时间】:2013-10-07 18:10:57
【问题描述】:

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

我有两个模型:游戏和类别,我希望这两个模型都使用一个 url 模式:

ios-games/category_name

ios-games/game_name

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

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

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

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

    我认为没有办法说您要继续从视图中查看 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() 方法的想法帮助了我。
    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 2021-06-18
    • 1970-01-01
    • 2014-05-15
    • 2021-02-11
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多