【问题标题】:Session variable not getting displayed会话变量未显示
【发布时间】:2012-04-10 14:51:02
【问题描述】:

我在基本模板中打印会话变量如下:

{% if request.session.user_id %}
Welcome {{ request.session.user_id }}, <a href="/accounts/logout/">Logout</a>
{% endif %} 

views.py

def loginfun(request):
    username = request.POST['username']
    password = request.POST['password']
    errors = []
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            request.session['user_id'] = username
            return render_to_response('home.html', context_instance=RequestContext(request))
        else:
            #errors.append("Account Inactive")
            return render_to_response('home.html',{'errors':errors}, context_instance=RequestContext(request))

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.contrib.messages.context_processors.messages",
    "django.core.context_processors.request",
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'registration'
)

【问题讨论】:

  • 对不起,我不明白。我是新手。
  • RequestContext 问题已解决,但现在会话变量未显示。
  • 用户名参数在哪里声明?我只能看到您将用户传递给登录方法。
  • 更新了登录方式。我需要发布整个 settings.py 吗?
  • 您是否将django.contrib.sessions.middleware.SessionMiddleware 包含到MIDDLEWARE_CLASSES 以及您将什么设置为session 后端?如果可能,请分享INSTALLED_APPS

标签: django session session-variables requestcontext


【解决方案1】:

django.core.context_processors.request 默认不在TEMPLATE_CONTEXT_PROCESSORS 中,所以你根本没有{{ request }} 变量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2020-07-25
    • 2012-05-03
    • 1970-01-01
    • 2013-03-24
    • 2013-07-30
    相关资源
    最近更新 更多