0

Example in this problem we need redirect the url http://localhost:8000/a/b/C/123/4/5/ to http://localhost:8000/abC12345 without / slash.

1. In your views.py

from django.http import HttpResponse
from django.views.generic.base import RedirectView
from django.core.urlresolvers import reverse

class UserRedirectView(RedirectView):
    # Ref: http://stackoverflow.com/a/16627830/3445802
    permanent = False

    def get_redirect_url(self, pk):
        pk = ''.join(str(pk).split('/'))
        return reverse('pool_fix_page', kwargs={'pk': pk})

def pool_fix(request, pk):
    return HttpResponse("You're looking at question %s." % pk)

2. In your urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    # first view the pool to doing redirection
    url(r'^pool/(?P[0-9a-zA-Z/]+)/$',
        views.UserRedirectView.as_view(),
        name='pool'
    ),
    # allow decimal and words only.
    url(r'^pool/(?P[dw_]+)$',
        views.pool_fix,
        name='pool_fix_page'
    ),
]
django python problem solution tricks

Your Answer

blog comments powered by Disqus