使用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
?
答案 0 :(得分:2)
您需要使用RequestContext
呈现模板并返回响应。
通常这样做:
def someview(request):
context = { }
return render_to_response('some_template.html', context,
context_instance = RequestContext(request))
Subclassing RequestContext上的更多文档。