Django 当某个应用程序不是上下文的一部分时,如何编写一个模板标记来显示该用户是否属于该应用程序?

Django 当某个应用程序不是上下文的一部分时,如何编写一个模板标记来显示该用户是否属于该应用程序?,django,django-models,django-views,Django,Django Models,Django Views,我有一个应用程序,有一个FK到用户 在所有模板中,我都需要一个模板标签来测试登录用户是否在该应用中 例如 在每个页面上,如果用户在customer.approved集合中,我希望显示一个模板块 我一直在玩{%if approved in customer.approved%},但我没有任何进展 欢迎您提出任何建议。如果您设置了user perms,您可以编写一个上下文处理器,以便: def user_is_authorised(request): if request.user.has_

我有一个应用程序,有一个FK到用户

在所有模板中,我都需要一个模板标签来测试登录用户是否在该应用中

例如

在每个页面上,如果用户在customer.approved集合中,我希望显示一个模板块

我一直在玩{%if approved in customer.approved%},但我没有任何进展


欢迎您提出任何建议。

如果您设置了user perms,您可以编写一个上下文处理器,以便:

def user_is_authorised(request):
    if request.user.has_perm('myapp.can_view'):
        return {'approved' : True}
    else:
        return {'approved' : False}
&将其作为“myapp.CONTEXT\u PROCESSORS.py”包含在CONTEXT\u PROCESSORS settings.py元组中

更多阅读请访问: &


或者,您可以在会话变量中设置应用程序,然后根据客户批准的外键进行检查。

我认为您需要的是一个过滤器,用于检查用户是否在您的FK型号中。因此,在应用程序_tags.py中,您可以执行以下操作:

from django import template
from app.models import MyModel

register = template.Library()

@register.filter
def belongs_to_app(user):
    if user.is_authenticated(): # Could be AnonymousUser
        try:
            # Check if there is a object with FK to logged user
            m = MyModel.objects.get(user=user)
            return True
        except MyModel.DoesNotExist:
            return False
    return False
在模板中:

{% if user|belongs_to_app %}
 ....
{% endif %}

当你说app时,你指的是一个模特,对吗?应用程序是一组模型、视图和URL。。模型是classOk,所以我下面的帖子应该有用返回{'approved':request.user.has\u perm'myapp.can\u view'}