上下文的使用

一、关于上下文的使用场景

有时候我们想让一些内容在多个模板中都要有,比如导航内容,我们又不想每个视图函数都写一次这些变量内容,怎么办呢?这时候就可以用 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文件中

results matching ""

    No results matching ""