["python","django","django-urls"]
Django URL Redirect

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.
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')