【问题标题】:How to navigate to different class views in django based on user type?如何根据用户类型导航到 django 中的不同类视图?
【发布时间】:2014-03-13 18:16:34
【问题描述】:

假设 url 是这样的:www.example.com/<username>,用户有两种类型:普通用户和高级用户。我想使用两个不同的视图来生成这两个不同的用户主页。我应该如何编写相应的urls.pyviews.py 文件来实现这一点。顺便说一句,两个不同的视图已经设置好了,都是基于类的视图,我只是不知道如何根据用户类型进行切换。

【问题讨论】:

  • 您是否将用户类型存储在数据库中?如果是,那么我会说这只是一个简单的if 声明...

标签: python django


【解决方案1】:

您可以有一个“调度”正确视图的中间视图。这样,您仍然可以拥有一个网址。因此,只需将一个 url 指向此视图:

class HomePageDispatchView(View):
    def dispatch(self, request, *args, **kwargs):
        if request.user.type == PREMIUM:
            return PremiumHomePage.as_view()(request, *args, **kwargs)
        else:
            return RegularHomePage.as_view()(request, *args, **kwargs)

【讨论】:

  • 这实际上与我在这里的回答非常相似:stackoverflow.com/a/19119131/2761986。我经常使用这种模式。它允许将代码分开,但使用相同的 url。
  • __init__() takes exactly 1 argument (3 given) 我收到了这个错误信息:(
  • 你的 url 定义是什么样的?
  • 对不起,我又犯了一个错误。现在好了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多