python - render_to_response 中传递的字典范围

标签 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 模板或我们应用程序的任何模板中使用该字典。

最佳答案

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

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

{{user}}

如果您希望在任何模板中都有一个具有范围的字典,请使用上下文处理器

将此添加到您的 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}}

关于python - render_to_response 中传递的字典范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439167/

相关文章:

python - 正则表达式匹配一次(不重复)

python - 如何将列表转换为查询集 Django

django - Django 对 Google 应用引擎的限制?

python - django render_to_response 未定义错误

django - 在 Django 中发送内容编码 header

python - 属性列中的分隔符

Python:从导入的文件调用函数

python - 如何逐行搜索文件,然后将包含特定字符串的行复制到列表中?

python - django表单动态属性查找

python - {{ 请求 }} var 空