По поводу редиректов, в django для этого есть приложение redirects
https://docs.djangoproject.com/en/1.9/ref/contrib/..., но стоит уточнить, что редирект работает только в том случае если начальная ссылка отдает 404. Дальше для редиректа на WWW в settings.py PREPEND_WWW = True Для обратного случая пишется middleware к примеру вот такой.
class UrlMiddleware(object):
def process_request(self, request):
host = request.get_host()
old_url = [host, request.path]
new_url = old_url[:]
if (settings.REMOVE_WWW and old_url[0] and old_url[0].startswith('www.')):
new_url[0] = old_url[0][4:]
if new_url != old_url:
try:
urlresolvers.resolve(new_url[1])
except urlresolvers.Resolver404:
pass
else:
if new_url[0]:
newurl = "%s://%s%s" % (
request.is_secure() and 'https' or 'http',
new_url[0], urlquote(new_url[1]))
else:
newurl = urlquote(new_url[1])
if request.GET:
newurl += '?' + request.GET.urlencode()
return http.HttpResponsePermanentRedirect(newurl)
return None
и в settings пишите REMOVE_WWW = True, для редиректа на слэш APPEND_SLASH = True , на слэш опять таки будет работать только в случае если без слэша отдает 404.