Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:在视图或模板中检测管理员登录_Django_Django Admin - Fatal编程技术网

Django:在视图或模板中检测管理员登录

Django:在视图或模板中检测管理员登录,django,django-admin,Django,Django Admin,如何从视图或模板文件中检测我的管理员用户是否已登录?例如,我的站点的用例: 用户打开/admin/,输入正确的凭据 然后用户打开一些页面,例如/page/,并有“添加”和“删除”按钮 用户打开/admin/并单击“注销” /page/->没有“添加”和“删除”按钮 Django版本1.4在模板中: {% if user.is_superuser %} <p>Hello, admin.</p> {% else %} <p>Hello, ordin

如何从视图或模板文件中检测我的管理员用户是否已登录?例如,我的站点的用例:

  • 用户打开
    /admin/
    ,输入正确的凭据
  • 然后用户打开一些页面,例如
    /page/
    ,并有“添加”和“删除”按钮
  • 用户打开
    /admin/
    并单击“注销”
  • /page/
    ->没有“添加”和“删除”按钮
  • Django版本1.4在模板中:

    {% if user.is_superuser %}
        <p>Hello, admin.</p>
    {% else %}
        <p>Hello, ordinary visitor.</p>
    {% endif %}
    

    根据您的需要,
    is\u员工
    可能比
    is\u超级用户
    更适合您。你可以了解其中的区别。

    约瑟夫的回答适合你的简单案例,但实际上无论是
    是员工还是
    是超级用户都不是完美的选择。假设你的页面是,比如说,
    /polls/
    (一个名为
    Poll
    的应用程序中的
    Poll
    对象列表),你应该测试特定的
    Poll.change\u Poll
    Poll.delete\u Poll

    在模板中:

    {% for poll in polls %}
        {% if perms.poll.change_poll %}<a href='/polls/edit/{{ poll.id }}'>Edit</a>{% endif %}
        {% if perms.poll.delete_poll %}<a href='/polls/delete/{{ poll.id }}'>Delete</a>{% endif %}
    {% endfor %}
    
    或者从某种角度来看:


    您可以直接将这些权限分配给用户、组(然后将用户放入该组),或者通过设置
    is\u superuser

    来分配这些权限。如果您不关心用户拥有的权限,只想确保他们已登录,您可以使用
    user.is\u anonymous
    ,如果用户注销,则为true;如果用户登录,则为false


    默认情况下,用户需要
    user.is\u staff
    才能访问Django管理员。

    请将正确的注释设置为解决方案!“权限”页面不工作,请更新;
    {% for poll in polls %}
        {% if perms.poll.change_poll %}<a href='/polls/edit/{{ poll.id }}'>Edit</a>{% endif %}
        {% if perms.poll.delete_poll %}<a href='/polls/delete/{{ poll.id }}'>Delete</a>{% endif %}
    {% endfor %}
    
    if not request.user.has_perm('poll.change_poll'):
        return HttpResponseForbidden('Nope!')
    
    @permission_required('poll.change_poll')
    def edit_poll(request, poll_id):
        # ....