【问题标题】:django different interfaces for different usersdjango针对不同用户的不同界面
【发布时间】:2018-03-26 12:56:38
【问题描述】:
我有一个模型 user2 与用户模型一对一的字段,
user2 有一个额外的字段 user_type,它可以是“etud”、“ensg”、“chef”或“tech”。我想做的是为每种类型的用户提供不同版本的网站,目前我正在做的是将所有内容都放在一个页面上,然后检查用户类型是否有一些特定的 HTML 标签,然后我m 为所有网站页面执行此操作。那么,我该怎么做呢?我用的方法是最好的吗?
【问题讨论】:
标签:
django
django-templates
django-views
【解决方案1】:
有多种方法可以做到。
基于用户类型呈现页面
假设他们登陆 URL /home/,您可以在调用 home_view() 之后映射不同的主页。
在这里你必须从这个模板创建通用 base_home.html 你必须 extends user_type 具有差异主题的特定模板。
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