根据用户显示信息

时间:2013-03-26 02:47:19

标签: django views

我有一个名为Schedule的类,有一个字段(这是正确的吗?)我已经设置好了 admins = models.ManyToManyField(User)。该字段包含我可以选择的倍数的用户列表。

在日程表的视图中,我展示了一堆信息。我想根据当前登录用户是否包含在正在查看的日程表的管理员中来显示其他一些内容。

1 个答案:

答案 0 :(得分:3)

根据Django的理念,您应该在模板中的视图和表示逻辑中拥有业务逻辑。因此,如果记录的用户属于管理员之间的计算应该在视图中完成,如果用户是,则应该在模板中确定显示的内容。你可以通过以下方式实现这一目标:

# views.py
def schedule(request, id):
    schedule = get_object_or_404(Schedule, pk=id)
    if request.user.is_authenticated():
        is_admin = schedule.admins.filter(pk=schedule.pk).exists()
    else:
        is_admin = False
    data = {
        'schedule': schedule,
        'is_admin': is_admin,
    }
    return render_to_response('template.html', data)

# template.html
{% if is_admin %}
    <p>You are an admin of the schedule!</p>
{% else %}
    <p>Sorry. You are not an admin of the schedule</p>
{% endif %}