上下文的使用
一、关于上下文的使用场景
有时候我们想让一些内容在多个模板中都要有,比如导航内容,我们又不想每个视图函数都写一次这些变量内容,怎么办呢?这时候就可以用 Django 上下文渲染器来解决.例如:用户上传头像或登陆用户名,需要在几个地方展示
二、django=2.0
中自带的上下文
1、上下文列表
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', ], }, }, ]
三、自定义一个上下文(用户头像)
- 1、项目中新建一个包来存放
2、自己创建一个上下文
from django.contrib.auth import get_user_model # 获取用户model User = get_user_model() def User_avatar(request): """ 给用户添加一个avatar属性 :param request: :return: """ user = request.user if not hasattr(user, 'avatar'): user_obj = User.objects.filter(user__pk=user.pk).first() if user_obj: setattr(user, 'avatar', user_obj.avatar) return {'user': user}
3、注册到
settings.py
文件中