Django class based generic view redirect
django, python
Solution
You should just name your urlpattern and redirect to that, that would be the most Django-ey way to do it.
It's not documented (so not guaranteed to work in future Django versions) but the `redirect` shortcut method can take a view function, so you can almost do `redirect(ClassView.as_view())` ...I say almost because this doesn't actually work - every time you call `as_view()` you get a new view function returned, so `redirect` doesn't recognise that as the same view as in your urlconf.
So to do what you want, you'd have to update your urlconf like so:
from .views import test_view
urlpatterns = patterns('',
('^test/$', test_view),
)
And in your views.py
class ClassView(View):
def get(self, request):
return HttpResponse("test")
def post(self, request):
# do something
return redirect(test_view)
test_view = ClassView.as_view()
But I still think you should do it the other way:
urlpatterns = patterns('',
url('^test/$', ClassView.as_view(), name="test"),
)
.
class ClassView(View):
def get(self, request):
return HttpResponse("test")
def post(self, request):
# do something
return redirect("test")
Problem
Consider the following: urls.py: ``` urlpatterns = patterns('', ('^test/$', ClassView.as_view()), ) ``` views.py: ``` class ClassView(View): def get(self, request): return HttpResponse("test") def post(self, request): # do something return redirect(ClassView.get(request)) # What should I do to redirect to a class here without specifying the path? ``` I want to redirect to ClassView's get function (/test/), but when I try the above I get: ``` NoReverseMatch at /test/ ``` So it obviously finds the URL but says that there's no match?