gpt4 book ai didi

python - Django 1.8(Python 3.4): Show different templates based on user authorization with Class-Based Views

转载 作者:行者123 更新时间:2023-12-01 04:37:22 25 4
gpt4 key购买 nike

我想要一个基于类的 View “主页”。当用户访问“主页”时:

如果用户是访客,则调用访客函数如果用户已登录,则调用登录函数

然后调用的函数会设置适当的模板和上下文。

这是执行此操作的正确方法吗?如果是的话怎么办?我找到的文档仅通过函数 View 对此进行了详细说明。

谢谢!

最佳答案

我会覆盖 get_template_names设置模板名称,和 get_context_data设置上下文数据。您可以使用self.request.user访问用户,并检查他们是否使用is_authenticated()登录。方法。

class HomepageView(TemplateView):
def get_context_data(self, **kwargs):
"""
Returns a different context depending
on whether the user is logged in or not
"""
context = super(HomepageView, self).get_context_data(**kwargs)
if self.request.user.is_authenticated():
context['user_type'] = 'logged in'
else:
context['user_type'] = 'guest'
return context

def get_template_names(self):
"""
Returns a different template depending
on whether the user is logged in or not
"""
if self.request.user.is_authenticated():
return 'logged_in_homepage.html'
else:
return 'guest_homepage.html'

请注意,我已经重写了 TemplateView 的不同方法来自定义功能,而不是为 guest 调用一种方法或为登录用户调用另一种方法来执行所有操作。如果您确实想调用一个可以完成所有操作的方法,那么最好使用函数 View 。

关于python - Django 1.8(Python 3.4): Show different templates based on user authorization with Class-Based Views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com