1

私は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 を呼び出しますが、この時点では、変数 account はリダイレクト後に破棄されたため、もう存在しません (それは私の推測です)。

アカウント変数を 2 番目のビューに送信したいのですが、うまくいきませんでした。

この問題についてご協力いただきありがとうございます。

4

1 に答える 1

2

テンプレートには条件があり、account設定されていない変数をチェックします。条件とエラー メッセージを削除するだけで、準備完了です。django-registration 0.8 では、その変数がテンプレートに設定されることはありません。

アクティベーション完了テンプレートのサンプルを次に示します。

お役に立てれば!

于 2013-01-29T12:08:07.857 に答える