字典的范围在render_to_response中传递

时间:2014-08-22 03:38:00

标签: python django render-to-response

def func(user):
    templatename="login.html"
    return render_to_response(templatename,{'user':user},context_instance=RequestContext(request)

在django的render_to_response函数中传递的范围范围是什么?我们只能在login.html模板中使用该字典,或者使用我们应用的任何模板。

1 个答案:

答案 0 :(得分:2)

dict的范围仅在login.html之内。

如果您想使用模板中user的访问权限,请使用以下内容:

{{user}}

如果您想在任何模板中使用带范围的dict,请使用上下文处理器

将此添加到您的 的 Settings.py

import django.conf.global_settings as DEFAULT_SETTINGS

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'utils.custom_context_processors.my_context_processor',
)

在项目根目录中创建一个文件夹,让它命名为" utils",在文件夹中创建 init .py文件和custom_context_processors.py

   +apps
   ....other folders.
   +utils
      ---__init__.py
      ---custom_context_processors.py

<强> custom_context_processors.py

def my_context_processor(request):
      your_custom_dict = {...}
      return your_custom_dict

有了这个,your_custom_dict将在任何模板中可用。

注意:如果您只想在任何地方访问该用户,请执行{{request.user}}