如何将设置TEMPLATE_CONTEXT_PROCESSORS中定义的上下文传递给我的自定义视图

时间:2013-02-05 11:22:29

标签: python django django-socialauth

使用Django Social Auth时遇到此问题。我有这个模板。

{% block content %}
<div id="content-main">
    <ul>
        {% for name in social_auth.backends %}
        <li>
            <a rel="nofollow" href="{% url "socialauth_begin" name %}">{{ name|title }}</a>
        </li>
        {% endfor %}
    </ul>
</div>
{% endblock %}

如果我使用标准urlpattern(它是登录页面)

,则会正确呈现
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),

但如果我使用自定义视图,如何传递TEMPLATE_CONTEXT_PROCESSORS中定义的上下文?

这是我的观点和settings.py文件

中的条目
def login(request):
    t = loader.get_template('registration/login.html')
    c = Context( {} )
    return HttpResponse(t.render(c))

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'social_auth.context_processors.social_auth_by_name_backends',
    'social_auth.context_processors.social_auth_backends',
    'social_auth.context_processors.social_auth_login_redirect',
)

有意义的是,在我看来context是空的,我将它传递给一个空对象,我应该怎样做才能传递正确的context

1 个答案:

答案 0 :(得分:2)

您需要使用RequestContext呈现模板并返回响应。 通常这样做:

def someview(request):
    context = { }
    return render_to_response('some_template.html', context,
                context_instance = RequestContext(request))

Subclassing RequestContext上的更多文档。