las*_*hla 5 django django-views django-context
假设我有一个上下文处理器:
def title(request):
return {'titles': 'mytitle'}
Run Code Online (Sandbox Code Playgroud)
我可以在模板中访问此变量{{ titles }}.
但是我怎么能在视野中这样做呢?
def myview(request):
print request.titles
Run Code Online (Sandbox Code Playgroud)
似乎不起作用 - 'WSGIRequest' object has no attribute 'titles'
或者可能有更好的方法(比上下文处理器)在视图和模板中都可以访问全局变量?
提前致谢.
nar*_*ren 10
将上下文处理器方法路径(folder.context_processor.application_context)添加到TEMPLATE_CONTEXT_PROCESSORS.
在我的情况下,application_context是我在文件context_processor.py中定义的方法,方法"application_context"返回{'titles':'mytitle'}
如果你想在视图中使用"title"作为全局变量,请以这种方式使用它
global_var = RequestContext(request).get("app_config")
titles = global_var.get("titles")
print titles
Run Code Online (Sandbox Code Playgroud)
唯一的优势是"相同的变量'标题'将在模板和视图中可见"
上下文处理器无论如何都不是全局变量。它们只是在启动 RequestContext 时运行的函数,将项目添加到该上下文中。因此,它们仅在您有 RequestContext 的地方可用,即在模板中。
您的示例并不能很好地了解您要访问的变量。如果只是想在任何地方使用一些常量,一个好方法是在中心位置定义它们,比如在 settings.py 中,然后在需要的地方导入该模块 - 加上使用上下文处理器将它们添加到上下文中。
| 归档时间: |
|
| 查看次数: |
4878 次 |
| 最近记录: |