一种方式是写一个简单的custom template context processor。这与接受HttpRequest
实例并返回字典的函数一样简单。在你的情况下,字典可以包含当前用户的权限列表。
例如,
# This is our processor.
def append_privileges(request):
privileges = get_privs(request.user)
return dict(privileges = privileges)
其中get_privs
是返回特权字典的方法,如您在问题中指出的那样。
现在将此处理器添加到您的settings.py
中的TEMPLATE_CONTEXT_PROCESSORS
设置中。通常这个变量不存在于设置中。当你添加它时,请确保你拷贝existing default和然后追加到它。对于例如
TEMPLATE_CONTEXT_PROCESSORS = (
# copied from docs.
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
# appended custom value
"app.utils.append_privileges",
)
最后在您的基本模板中预计为privileges
变量。
# I've added a pprint to test. You'll obviously need to do more.
{{ privileges|pprint }}
这将确保所有的意见会自动返回上下文有一个正确的privileges
变量。
太感谢很多马诺吉,这似乎是完美的!我真的很感谢你把你的时间节省下来! Stackoverflow对于开发者来说是一个了不起的工具。 – Rich 2010-09-24 08:46:08
@ Rich:很高兴帮助。支付它:) – 2010-09-24 08:56:07