我是Django的新手,我将django-registration包含在我的项目中。
除了当用户点击激活链接时,它的帐户已被激活,但用户被重定向到另外说明的模板,它的效果很好。
这是urls.py部分:
urlpatterns = patterns('',
url(r'^activate/complete/$',
direct_to_template,
{'template': 'registration/activation_complete.html'},
name='registration_activation_complete'),
url(r'^activate/(?P<activation_key>\w+)/$',
activate,
{'backend': 'registration.backends.default.DefaultBackend'},
name='registration_activate'),
以下是视图部分:
def activate(request, backend,
template_name='registration/activate.html',
success_url=None, extra_context=None, **kwargs):
backend = get_backend(backend)
account = backend.activate(request, **kwargs)
if account:
if success_url is None:
to, args, kwargs = backend.post_activation_redirect(request, account)
return redirect(to, *args, **kwargs)
else:
return redirect(success_url)
if extra_context is None:
extra_context = {}
context = RequestContext(request)
for key, value in extra_context.items():
context[key] = callable(value) and value() or value
return render_to_response(template_name,
kwargs,
context_instance=context)
该行:
backend.post_activation_redirect
返回registration_activation_complete
这是模板:
{% extends "base.html" %}
{% load i18n %}
{% block content %}
{% if account %}
<p>{% trans "Account successfully activated" %}</p>
<p><a href="{% url auth_login %}">{% trans "Log in" %}</a></p>
{% else %}
<p>{% trans "Account activation failed" %}</p>
{% endif %}
{% endblock %}
我怀疑是它创建了帐户,然后通过该行重定向到另一个URL:
return redirect(to, *args, **kwargs)
然后它调用通用视图direct_to_template,但此时变量帐户不再存在,因为它在重定向后被销毁(这是我的猜测)。
我想将帐户变量发送到第二个视图,但没有设法执行此操作。
感谢您对此问题的帮助。
答案 0 :(得分:2)
模板具有条件,它检查未设置的account
变量。只需删除条件和错误消息,你应该好好去。在django-registration 0.8中,永远不会为模板设置该变量。
以下是Activation Complete Template示例。
希望这有帮助!