django 上下文渲染器

需求介绍:

所有页面需要检测用户是否登陆,并渲染 登录|注册 或是用户名。

动手写个上下文渲染器

1.项目路径

zqxt
├── blog
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── zqxt
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

2.在 zqxt/zqxt/ 这个目录下(与settings.py 在一起)新建一个 context_processor.py

from django.conf import settings as original_settings
 
 
def settings(request):
    return {'settings': original_settings}
 
 
def ip_address(request):
    return {'ip_address': request.META['REMOTE_ADDR']}

3.我们把新建的两个 上下文渲染器 加入到 settings.py 中

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
 
                'zqxt.context_processor.settings',
                'zqxt.context_processor.ip_address',
            ],
        },
    },
]

  

我们仅需在模板中使用这些context中的变量即可。我们在view中的context并不会被影响到,但使用上下文渲染器将会导致缓存优化困难的问题。

posted @ 2018-04-10 21:29  家迪的家  阅读(1299)  评论(0编辑  收藏  举报