29👍
It’s not the POST button that should redirect, but the view.
If not differently specified, the form (the HTML form tag) POSTs to the same URL. If the form is on /contact/, it POSTs on /contact/ (with or without slash, it’s the same).
It’s in the view that you should redirect to thanks. From the doc:
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render_to_response('contact.html', {
'form': form,
})
Change /thanks/
to /contact/thanks/
and you’re done.
12👍
All of the responses are correct but a better approach is to give names to your URLs in urls.py
and hint to them in views with reverse function (instead of hard coding URL in views).
urls.py:
(r'^contact/$', contact, name='contact'),
(r'^contact/thanks/$', contact_thanks, name='thanks'),
And hint them in views.py like this:
from django.urls import reverse
return HttpResponseRedirect(reverse('app_name:thanks'))
This is better for future approach and follow the DRY principle of Django.
- [Django]-What is an efficient way of inserting thousands of records into an SQLite table using Django?
- [Django]-Django URLS, how to map root to app?
- [Django]-Naming convention for Django URL, templates, models and views
5👍
I believe that apart from Aviral Dasgupta’s solution, OP also needs to change the relative url.
return HttpResponseRedirect('/thanks/')
to
return HttpResponseRedirect('/contact/thanks/')
/thanks/
should take the url to root: yoursite/thanks/
and not yoursite/contact/thanks/
.
- [Django]-Most optimized way to delete all sessions for a specific user in Django?
- [Django]-How do I refresh the values on an object in Django?
- [Django]-Update model django through kwargs
3👍
Just try this. It worked for me.
return HttpResponseRedirect('thanks/')
Note:- Remove the forward slash before
- [Django]-Django {{ MEDIA_URL }} blank @DEPRECATED
- [Django]-Django migrations – workflow with multiple dev branches
- [Django]-How do I change the range of the x-axis with datetime?
0👍
Use the Django APPEND_SLASH setting.
APPEND_SLASH
When set to True, if the request URL
does not match any of the patterns in
the URLconf and it doesn’t end in a
slash, an HTTP redirect is issued to
the same URL with a slash appended.
Note that the redirect may cause any
data submitted in a POST request to be
lost.
- [Django]-Does get_or_create() have to save right away? (Django)
- [Django]-How to use permission_required decorators on django class-based views
- [Django]-Django- nginx: [emerg] open() "/etc/nginx/proxy_params" failed (2: No such file or directory) in /etc/nginx/sites-enabled/myproject:11