代码之家  ›  专栏  ›  技术社区  ›  Mohamed Benkedadra

django针对不同用户的不同界面

  •  0
  • Mohamed Benkedadra  · 技术社区  · 7 年前

    我有一个模型user2,其中有一个用户模型的一对一字段, user2还有一个字段user\u类型,可以是“etud”、“ensg”、“chef”或“tech”。我想做的是为每种类型的用户提供一个不同版本的网站,目前我所做的是将所有内容都放在一个页面上,然后检查用户类型中是否有一些特定的HTML标记,我正在为所有网站页面执行此操作。那么,我该怎么做呢?我使用的方法是最好的方法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   ramganesh    7 年前

    有多种方法可供选择。

    基于用户类型呈现页面

    假设它们位于URL/home/上,在调用home\u view()后,您可以映射不同的主页。

    在这里,您必须创建generic base\u home。此模板中的html您必须 extends 具有差异主题的用户类型特定模板。

    def home_view(request):
       context = {}  # add your template context here common for all user.  
       if request.user.user_type == "etud":
           # update your user_type specific context here.
           template_name = etud_home.html
           response = TemplateResponse(request, template_name, context)
           return response
       if request.user.user_type == "ensg":
           template_name = ensg_home.html
           response = TemplateResponse(request, template_name, context)
           return response
    

    如果您想使用更通用的方式检查 process_template_response middleware