我有一个对用户有FK的应用。
在所有模板中,我需要一个模板标签,用于测试登录用户是否在该应用程序中。
例如......
如果用户位于customer.approved集中,我希望在每个页面上显示模板块。
我一直在玩{%如果在customer.approved%中获得批准} - 但我没有到达任何地方。
欢迎任何建议。
答案 0 :(得分:0)
如果您设置了用户权限,则可以编写一个context_processor,以便:
def user_is_authorised(request):
if request.user.has_perm('myapp.can_view'):
return {'approved' : True}
else:
return {'approved' : False}
&安培;在CONTEXT_PROCESSORS settings.py元组中将其包含为'myapp.context_processors.py'
更多阅读: https://docs.djangoproject.com/en/dev/topics/auth/#handling-object-permissions& https://docs.djangoproject.com/en/dev/ref/templates/api/#django-contrib-auth-context-processors-auth
或者,您可以在会话变量中设置应用程序,然后根据客户批准的外键进行检查。
答案 1 :(得分:0)
我认为您需要的是一个过滤器,用于检查用户是否在您的模型中(FK)。所以在你的application_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 %}