首页 > 其他 > 详细

上下文渲染器RequestContext

时间:2017-09-08 00:04:06      阅读:281      评论:0      收藏:0      [点我收藏+]
在render_to_response中加RequestContext会将settings中设置的context_processors返回值收集起来传到模板
return render_to_response(index.html, {...}, context_instance=RequestContext(request))

settings.py

TEMPLATES = [
    {
        BACKEND: django.template.backends.django.DjangoTemplates,
        DIRS: [os.path.join(BASE_DIR, templates)]
        ,
        APP_DIRS: True,
        OPTIONS: {
            context_processors: [
                django.template.context_processors.debug,
                django.template.context_processors.request,
                django.contrib.auth.context_processors.auth,
                django.contrib.messages.context_processors.messages,
                BookStore.views.global_settings,
                django.template.context_processors.media,
                BookStore.context_processor.ip_address,

            ],
        },
    },


可以手动写个上下文渲染器(以下摘自自强学堂):新建context_processor.py

添加以下内容

 
def ip_address(request):
    return {ip_address: request.META[REMOTE_ADDR]}
settings.py中加入对应路径,如上面的settings.py加入了‘BookStore.context_processor.ip_address‘

 在模板中就可以使用

{{ ip_address }}

 

https://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/

这里有如何向render_to_response添加RequestContext的方法。

有个@render_to感觉非常经典,代码如下

def render_to(template_name):
    def renderer(func):
        def wrapper(request, *args, **kw):
            output = func(request, *args, **kw)
            if not isinstance(output, dict):
                return output
            return render_to_response(request, template_name, output)
        return wrapper
    return renderer

@render_to(my_template.html)
def my_view(request):
    # View code here...
    return some_dict

 

 

上下文渲染器RequestContext

原文:http://www.cnblogs.com/songbird/p/7492420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!