Django URL Redirect
django, django-urls, python
Solution
You can try the Class Based View called `RedirectView`
from django.views.generic.base import RedirectView
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
)
Notice how as `url` in the `<url_to_home_view>` you need to actually specify the url.
`permanent=False` will return HTTP 302, while `permanent=True` will return HTTP 301.
Alternatively you can use `django.shortcuts.redirect`
Update for Django 2+ versions
With Django 2+, `url()` is deprecated and replaced by `re_path()`. Usage is exactly the same as `url()` with regular expressions. For replacements without the need of regular expression, use `path()`.
from django.urls import re_path
re_path(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
Problem
How can I redirect traffic that doesn't match any of my other URLs back to the home page? urls.py: ``` urlpatterns = patterns('', url(r'^$', 'macmonster.views.home'), #url(r'^macmon_home$', 'macmonster.views.home'), url(r'^macmon_output/$', 'macmonster.views.output'), url(r'^macmon_about/$', 'macmonster.views.about'), url(r'^.*$', 'macmonster.views.home'), ) ``` As it stands, the last entry sends all "other" traffic to the home page but I want to redirect via either an HTTP 301 or 302.