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视图本身发送。您不能这样做,因为register如果您想message在成功注册后在上下文中发送 a ,则需要您更改视图。

因此,您需要编写一个额外的视图。假设这个文件是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 回答