[Django]-Django forms: reload view after post

-1๐Ÿ‘

โœ…

I may misunderstand your intension.
But I think when the form is valid you should do something like:

if form.is_valid():
    actkey = request.POST['actkey']
    activate( '', actkey )
    return render_to_response( 'profile/register.html', { 'message' : message } )

ie. omit the form object after you activate the user.

5๐Ÿ‘

You should redirect after a successful form submission

 if request.method == 'POST':
   form = ActivateForm( request.POST )
   if form.is_valid():
     actkey = form.cleaned_data['actkey']#access cleaned_data instead of raw post
     activate( '', actkey )
     return HttpResponseRedirect('/')

3๐Ÿ‘

The best way to solve this problem is using a redirect to the previous page:

return redirect(request.META['HTTP_REFERER'])

0๐Ÿ‘

Itโ€™s both not quite what i was looking for, but i fixed it this way:

def activate( request = '', actkey = "" ):
message = ""
if len( actkey ) != 40:
    if request.method == 'POST':
        form = ActivateForm( request.POST )
        if form.is_valid():
            actkey = request.POST['actkey']

            profile = userprofile.objects.get( actkey = actkey )
            user = User.objects.get( id = profile.user_id )
            user.is_active = True
            user.save()
            profile.actkey = ""
            profile.save()
            message += "Uw account is succesvol geactiveerd."
            return render_to_response( 'profile/register.html', { 'message' : message } )
    else:
        form = ActivateForm()
else:
    profile = userprofile.objects.get( actkey = actkey )
    user = User.objects.get( id = profile.user_id )
    user.is_active = True
    user.save()
    profile.actkey = ""
    profile.save()
    message += "Uw account is succesvol geactiveerd."
    return render_to_response( 'profile/register.html', { 'message' : message } )
return render_to_response( 'profile/register.html', { 'message' : message, 'form' : form } )

Thanks for the replies ๐Ÿ™‚

Leave a comment