获取自定义submit_line.html模板的用户类型

时间:2015-12-02 15:34:22

标签: python django

我在submit_line.html中添加了一个提交按钮。我想只为员工用户而不是超级用户展示它。 我有以下模板存根:

{% if request.user.is_superuser %} 
  submit-button
{% else %}
  no submit-button
{% endif %}

但我访问该页面的任何用户都会获得提交按钮代码

我还验证了“settings.py”中启用了上下文处理器,我们可以阅读:https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates

似乎django变量用户超出了此范围。 我该如何解决?

提前致谢。

1 个答案:

答案 0 :(得分:0)

现在它有效!! 在管理模板中,submit_line.html通过admin_modify.py文件中包含标记submit_row中的takes_context=True传递上下文信息。要获得用户信息也需要传递请求:

admin_modify.py 


from django.contrib import admin


@register.inclusion_tag('admin/submit_line.html', takes_context=True)
def submit_row(context, request):
"""
Displays the row of buttons for delete and save. I added the user variable to the context
and I pass it in ctx.
"""
opts = context['opts']
change = context['change']
is_popup = context['is_popup']
save_as = context['save_as']
user = request.user
ctx = {
    'user_type': user,
    'opts': opts,
    'show_delete_link': (
     ..........

当调用submit_row包含标记时,我在change_form.html中添加了request参数:

change_form.html

{% submit_row request %}

最后,在submit_line.html中我可以使用:

submit_line.html

{% if user_type.is_superuser %}