• django通过添加session来保存公共变量


    有时候我们需要所有页面都使用同一个变量,比如用户登录信息。那不可能render每一个页面时都去传递一个变量,会非常麻烦
    而用session可以解决这个问题
     
    web的session可以通过request.session返回,返回结果是一个字典

    第一步:通过视图修改session中自定义key的内容

    比如我增加一个username字段
     
    在webManage下新建一个叫做context_processor的文件,然后添加下面的内容
    def username(request):
        return {'username': request.session.get('username', "Guest")}
     
    该方法返回了请求的session中的username值,如果没有赋值Guest
    如果想直接给他赋值,直接用request.session[“username"]=xxx即可

    第二步:修改settings.py文件,增加刚创建的方法

    在TEMPLATES->OPTIONS->context_processors下增加刚刚添加的方法(页面.方法)
     
    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',
                    'webManage.context_processor.username'
                ],
            },
        },
    ]
     

    第三步:调用创建的方法 

    views视图中直接使用username就可以获得定义的username方法的返回值
    在html中使用{{ username }}调用该内容
     
  • 相关阅读:
    CentOS 5.3 挂载 读写 ntfs硬盘
    Linux基础教程
    信息安全技术实用教程
    单片机原理与应用技术
    【36.11%】【codeforces 725C】Hidden Word
    【37.74%】【codeforces 725D】Contest Balloons
    【16.67%】【codeforces 667C】Reberland Linguistics
    【16.05%】【codeforces 664B】Rebus
    【record】10.17..10.23
    【23.33%】【codeforces 664C】International Olympiad
  • 原文地址:https://www.cnblogs.com/meitian/p/6557344.html
Copyright © 2020-2023  润新知