Django的inclusion_tag找不到上下文['request']

时间:2013-09-02 14:32:06

标签: python django

使用inclusion_tag我试图根据登录状态创建一个包含用户链接的标题(例如,如果用户登录;显示用户名和注销链接,否则登录并注册链接)。 为此,我创建了自己的登录应用程序,因此我没有使用任何Django的MIDDLEWARE_CLASSES

我错过了什么?任何帮助将不胜感激,谢谢!

KeyError异常

Exception Type: KeyError
Exception Value: 'request'

templatetags / login_tags.py

from django import template
from login.models import Login
from test.views import read_secure_cookie

def login_finder(context):
    user = {} 
    active_user = read_secure_cookie(context['request'], 'user_id')
    id = active_user[0]
    try:
        login = Login.objects.filter(id=id).get()
    except Login.DoesNotExist:
        return None

    user['user'] = login.username
    return user

register = template.Library()
register.inclusion_tag('login/header.html', takes_context=True)(login_finder)

views.py

def frontpage(request):
    params = {}
    return render_to_response('frontpage.html', 
                              params, 
                              context_instance=RequestContext(request))

模板/登录/ frontpage.html

{% extends "base.html" %}
{% load login_tags %}

{% block title %}{{ block.super }}{% endblock %}

{% login_finder %}    

1 个答案:

答案 0 :(得分:1)

默认情况下,请求上下文处理器未处于活动状态。您需要自己在settings.py中将其添加到TEMPLATE_CONTEXT_PROCESSORS