Это то, о чем я удивлялся в паре фреймворков, с которыми я портился.Предполагая, что я не хочу автоматически регистрировать пользователя при регистрации (я хочу, чтобы он активировал), как я могу сделать так, чтобы пользователь не мог просто посетить страницу «регистрация-успех»?Прямо сейчас, вот что у меня есть:
def register(request):
if request.method == 'POST':
rf = forms.RegisterForm(request.POST)#register form
pf = forms.ProfileForm(request.POST)#profile form (additional info)
lf = forms.LoginForm()#login form is also on this page but is empty when registering
if rf.is_valid() and pf.is_valid():
newuser = User(username=rf.cleaned_data['username'],email=rf.cleaned_data['email'])
newuser.set_password(rf.cleaned_data['password'])
newuser.save()
#need to mark newuser as inactive still
profile = pf.save(commit=False)
profile.user = newuser
profile.save()
return HttpResponseRedirect("/register-success/")
return render_to_response("authentication/index.html", {'rform': rf, 'pform':pf,'lform':lf})
return main(request)
def register_success(request):
return render_to_response("authentication/register-success.html")
Мой url-conf:
(r'^register-success/$','register_success'),
Другой способ, которым я думал сделать это, это просто render_to_response ("аутентификация / регистрация-успех".html ") и не делайте редирект.Преимущество в том, что никто не может получить доступ к странице register-success.html, недостатком является то, что если пользователь обновит страницу, он попытается и повторно отправит POST.Какая лучшая практика?