Django 当某个应用程序不是上下文的一部分时,如何编写一个模板标记来显示该用户是否属于该应用程序?
我有一个应用程序,有一个FK到用户 在所有模板中,我都需要一个模板标签来测试登录用户是否在该应用中 例如 在每个页面上,如果用户在customer.approved集合中,我希望显示一个模板块 我一直在玩{%if approved in customer.approved%},但我没有任何进展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_
欢迎您提出任何建议。如果您设置了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'}