web-dev-qa-db-fra.com

Django - Vue générique basée sur les classes - "Aucune URL vers laquelle rediriger"

J'utilise le CreateView générique comme:

#urls.py

from Django.conf.urls.defaults import *
from Django.views.generic import CreateView
from content.models import myModel

urlpatterns = patterns('myApp.views',
    (r'myCreate/$', CreateView.as_view(model=myModel)),
)

Avec un template mymodel_form.html comme:

<form method="post" action="">
{% csrf_token %}
  {{ form.as_p }}
  <input type="submit" value="Submit" />
</form>

Lorsque je soumets mon formulaire, le nouvel objet est créé mais le message d'erreur s'affiche.

ImproverlyConfigured at ...

Aucune URL vers rediriger vers. Soit fournir une URL ou définissez une méthode get_absolute_url sur le modèle.

Comment puis-je spécifier l'URL à rediriger en cas de succès?

41

Avez-vous essayé de transmettre success_url? par exemple.

CreateView.as_view(model=myModel, success_url="/success/")

ou si vous souhaitez rediriger vers une vue nommée:

CreateView.as_view(model=myModel, success_url=reverse('success-url'))
73
NickAldwin

vous pouvez également essayer de définir get_absolute_url dans vos modèles. Par exemple

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 
15
zzart

Ajouter dans les vues:

def form_valid(self, form):

   return self.render_to_response(self.get_context_data(form=form))
0
user2567460