Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
在HTML中获取Django用户组_Html_Django - Fatal编程技术网

在HTML中获取Django用户组

在HTML中获取Django用户组,html,django,Html,Django,我正在尝试用HTML获取Django用户组的if标记。这就是我所尝试的: {% ifequal user.groups.all.0 'ABC' %} {% endif %} {% if request.user|has_group:"mygroup" %} <h1>Has group mygroup</h1> {% endif %} 但这是行不通的。还有什么别的办法吗?试试这个: {% for group in request.user.groups.all %}

我正在尝试用HTML获取Django用户组的if标记。这就是我所尝试的:

{% ifequal user.groups.all.0 'ABC' %}
{% endif %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
但这是行不通的。还有什么别的办法吗?

试试这个:

{% for group in request.user.groups.all %}
    {% if group.name == 'ABC' %}{% endif %}
{% endfor %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
您必须从请求上下文变量访问当前用户对象。为此,请确保模板设置中有
django.template.context\u processors.request

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
request.user.groups.all.0
返回一个组模型对象,因此您必须与
name
字段进行比较。

尝试以下操作:

{% for group in request.user.groups.all %}
    {% if group.name == 'ABC' %}{% endif %}
{% endfor %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
您必须从请求上下文变量访问当前用户对象。为此,请确保模板设置中有
django.template.context\u processors.request

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

request.user.groups.all.0
返回一个组模型对象,因此您必须与
name
字段进行比较。

我认为您必须在这里使用一点Python。例如,a:

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
在模板中:

{% if request.user|has_group:"ABC" %}
...
{% endif %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
(来源:)

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
但也许你真的应该在这里使用权限

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
编辑:下面是一个更完整的自定义模板标记示例:

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
settings.py:

INSTALLED_APPS = [
    ...
    'yourapp',
    ...
]
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
文件系统:

yourproject/
    manage.py
    yourproject/
        settings.py
        wsgi.py
        ...
    yourapp/
    __init__.py
    templatetags/
        __init__.py
        yourapp_extras.py
    ...
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
yourapp_extras.py:

from django import template

register = template.Library()

@register.filter(name='has_group')
def has_group(user, group_name):
    return user.groups.filter(name=group_name).exists()
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
模板:

{% load yourapp_extras %}
{% if request.user|has_group:"ABC" %}
...
{% endif %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

为了更透彻地理解这一点,我强烈建议您阅读Django的优秀文档。

我认为您必须在这里使用一点Python。例如,a:

<h1>{{ user.groups.all.0 }}</h1>
{% if user.groups.all.0.name == 'Team2' %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}    
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
在模板中:

{% if request.user|has_group:"ABC" %}
...
{% endif %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
(来源:)

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
但也许你真的应该在这里使用权限

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
编辑:下面是一个更完整的自定义模板标记示例:

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
settings.py:

INSTALLED_APPS = [
    ...
    'yourapp',
    ...
]
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
文件系统:

yourproject/
    manage.py
    yourproject/
        settings.py
        wsgi.py
        ...
    yourapp/
    __init__.py
    templatetags/
        __init__.py
        yourapp_extras.py
    ...
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
yourapp_extras.py:

from django import template

register = template.Library()

@register.filter(name='has_group')
def has_group(user, group_name):
    return user.groups.filter(name=group_name).exists()
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
模板:

{% load yourapp_extras %}
{% if request.user|has_group:"ABC" %}
...
{% endif %}
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
为了更透彻地理解这一点,我强烈建议阅读Django的优秀文档

<h1>{{ user.groups.all.0 }}</h1>
{% if user.groups.all.0.name == 'Team2' %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}    
{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
在下面的文件结构中的组内\u check.py

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
--app
    |templates
    |templatetags 
                 |-- group_check.py
在下面的文件结构中的组内\u check.py

{% if request.user|has_group:"mygroup" %}
<h1>Has group mygroup</h1>
{% endif %}
--app
    |templates
    |templatetags 
                 |-- group_check.py


你是说登录用户?是的。我想要登录用户,然后使用
request.user.which
,你是说登录用户吗?是的。我想要登录的用户然后使用
request.user.which
,在HTML模板本身中没有办法解决这个问题吗?在视图中执行它对我的项目来说是非常复杂的,我无法让它在我的项目中工作。我一直发现utils\u extras找不到,即使它位于正确的目录中。在模板中可以使用多种方法,但我确实建议使用自定义模板标记。这比听起来容易多了。一旦你完成了,你就不想回去了;)我用一个更完整的自定义模板标记示例更新了答案。如果仍然出现错误,请再次检查templatetags模块是否位于正确的位置,名称是否匹配,以及是否正确使用了
register
。此外,您的应用程序需要安装在
安装的应用程序中。是否无法在HTML模板本身中解决此问题?在视图中执行它对我的项目来说是非常复杂的,我无法让它在我的项目中工作。我一直发现utils\u extras找不到,即使它位于正确的目录中。在模板中可以使用多种方法,但我确实建议使用自定义模板标记。这比听起来容易多了。一旦你完成了,你就不想回去了;)我用一个更完整的自定义模板标记示例更新了答案。如果仍然出现错误,请再次检查templatetags模块是否位于正确的位置,名称是否匹配,以及是否正确使用了
register
。另外,你的应用程序需要安装在
已安装的应用程序中。嘿,这也不行。但是,如果我正在设置我的
  • {{user.groups.all.0}},那就是在输出中显示组。但是if语句似乎不起作用,我已经在Django 1.8上测试过了,非常好。谢谢你的帮助。我这边似乎有一些不稳定的行为。如果在一个完全不相关的if标记中使用,那么它是有效的。让我看看是什么导致了这种情况。这种解决方案可行,但效率有点低,因为您从数据库中获取用户的所有组,并在模板中循环所有组,而实际上您只想知道用户是否是给定组的成员。它也不是很可重用。我的情况总是评估为错误。有没有什么常见的错误可能导致它?嘿,这也不行。但是,如果我正在设置我的
  • {{user.groups.all.0}},那就是在输出中显示组。但是if语句似乎不起作用,我已经在Django 1.8上测试过了,非常好。谢谢你的帮助。我这边似乎有一些不稳定的行为。如果在一个完全不相关的if标记中使用,那么它是有效的。让我看看是什么导致了这种情况。这种解决方案可行,但效率有点低,因为您从数据库中获取用户的所有组,并在模板中循环所有组,而实际上您只想知道用户是否是给定组的成员。它也不是很可重用。我的情况总是评估为错误。是否有可能导致这种情况的常见错误?