1

登録に成功すると、ユーザーはテンプレート'registration_complete.html'にリダイレクトされます。

この動作を変更して、ユーザーを登録ページにリダイレクトし、メッセージを表示する方法はありますか?

私はregistration_complete.htmlでこのようなことをすることを考えました:

{% include 'registration/registration_form.html' with message='Your account has been created. Please check your email for activation instructions' %}

ただし、formテンプレートで使用する変数はこのビューでは使用できないため、登録フォームは表示されません。さらに、これがこれを行うための最良の方法であるかどうかはわかりません。

編集:

url(r'^register/$', 'registration.views.register',
    {
        'backend': 'trabam.apps.accounts.regbackend.Backend',
        'form_class' : UserRegistrationForm,
        'success_url': '/accounts/register'
    },
    name='registration_register'
),

登録が完了した後、テンプレートにメッセージを設定するにはどうすればよいですか?

4

2 に答える 2

2

登録が成功すると、ユーザーをそのURLにリダイレクトするsuccess_urlを指定できます。

メッセージを表示するための簡単な方法は、success_urlにもgetパラメーターを追加することですが、ビューを変更してrequest.GETから取得し、リクエストコンテキストに配置する必要があります。

urls.py:

url(r'^register/$', 'registration.views.register',
  {
    'backend': 'trabam.apps.accounts.regbackend.Backend',
    'form_class' : UserRegistrationForm,
    'success_url': '/accounts/register/?on_success=true'
  },
    name='registration_register'
 ),

ビューで:

on_success = request.GET.get('on_success', None)
context.update({'on_success': on_success})

テンプレート内:

{% if on_success %}
    <p>You are successfully registered</p>
{% endif %}
于 2012-08-24T23:08:25.807 に答える
0

urls.pyから、ビュー自体success_urlとしてを送信しているようです。登録が成功した後にコンテキストでを送信する場合は、ビューregisterを変更する必要があるため、これを行うことはできません。registermessage

したがって、追加のビューを作成する必要があります。このファイルが。であるとしますaccounts/views.py

from registration.forms import RegistrationForm
def registration_complete(request):
    .....
    form = RegistrationForm()
    .....
    message = "You are successfully registered"
    return render_to_response("registration/registration_form.html", {'form': form, 'message': message})

テンプレートregistration/registration_form.htmlは、によって使用されるものと同じですdjango-registration

accounts/urls.py

url(r'^registration_complete/', 'accounts.views.registration_complete', name='accounts_registration_complete'),

あなたのurls.py

urlpatterns = patterns('',
    (r'^registration/register/$', 'registration.register', {'backend': 'registration.backends.default.DefaultBackend', 'success_url': 'accounts_registration_complete'}),
    (r'^registration/', include('registration.urls')),)

registration/registration_form.html

{% if message %}
    {{message}}
{% endif %}
.......
{{form.as_p}}

したがって、登録が成功した後にのみ、あなたsuccess_urlが使用され、あなたがregistration_complete定義したビューが呼び出されます。このビューはmessage、登録テンプレートが使用できるコンテキストで送信されます。

于 2013-03-28T14:18:53.363 に答える