django 全局变量

作者: admin 分类: python 发布时间: 2011-08-29 10:07 ė 6 没有评论

首先,request对象并不是自动作为可用的 Context 变量的。在 global_settings.py 中有一段 Context 处理器的定义:

# List of processors used by RequestContext to populate the context.
# Each one should be a callable that takes the request object as its
# only parameter and returns a dictionary to add to the context.
TEMPLATE_CONTEXT_PROCESSORS = (
    ‘django.core.context_processors.auth’,
    ‘django.core.context_processors.debug’,
    ‘django.core.context_processors.i18n’,
#    ‘django.core.context_processors.request’,
)

注意,这个Context处理器的配置只对RequestContext生效。request并不是缺省可用的。那么我现在就是需要增加一个自定义的SiteInfo处理器即可。

这个SiteInfo处理器很简单:

from apps.site.models import BlogSite

def siteinfo(request):
    sites = BlogSite.objects.all()
    if len(sites) > 0:
        site = sites[0]
    else:
        site = None
    return {’site’: site}

然后在 settings.py 中定义:

TEMPLATE_CONTEXT_PROCESSORS = (
    ‘django.core.context_processors.auth’,
    ‘django.core.context_processors.debug’,
    ‘django.core.context_processors.i18n’,
    ‘django.core.context_processors.request’,
    ‘utils.sitecontext.siteinfo’,
)

同时因为为了处理user,我的View中的Context基本上都是使用的 RequestContext,所以这块工作就省了。然后再在几个基础模板中增加 {{ site.othercode }} 这样就完成了。

整个处理还是比较简单。

本文出自 小Q,转载时请注明出处及相应链接。

本文永久链接: http://www.linuxqq.com/archives/761.html

0
更多
Ɣ回顶部