I\'m using the generic CreateView like:
#urls.py
from django.conf.urls.defaults import *
from django.views.generic import CreateView
from content.models import
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
model = Post
success_url = '/'
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
return False
Have you tried passing in success_url
? e.g.
CreateView.as_view(model=myModel, success_url="/success/")
or if you want to redirect to a named view:
CreateView.as_view(model=myModel, success_url=reverse('success-url'))
Add in views:
def form_valid(self, form):
return self.render_to_response(self.get_context_data(form=form))
you can also try to define get_absolute_url in your models. For example
class Something(models.Model):
name = models.CharField(max_length=50, verbose_name='name')
class Meta:
pass
def get_absolute_url(self):
return u'/some_url/%d' % self.id
views.py/
from django.views.generic import CreateView
from .models import myModel
class createView(CreateView):
model = myModel
fields = ['your fields', ...'']
def get_success_url(self):
return reverse('some_url')
urls.py/ (of your app)
from django.urls import path
from . import views
urlpatterns = [
path('create/', views.createView.as_view(), name='create')
]