2011-06-07 29 views
37

estoy usando el CreateView genérico como:Django - Class Based vista genérica - "No URL para redirigir a"

#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)), 
) 

Con una plantilla mymodel_form.html como:

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

Cuando presentar mi forma, se crea el nuevo objeto, pero me sale el error

ImproperlyConfigured en ...

Sin URL a redirigir a. Proporcione una url o defina un método get_absolute_url en el Modelo.

¿Cómo puedo especificar la URL para redirigir al éxito?

Respuesta

64

¿Ha intentado pasar en success_url? p.ej.

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

o si desea redirigir a una vista denominada:

CreateView.as_view(model=myModel, success_url=reverse('success-url')) 
+1

Eso es lo que se me olvidó. Gracias –

+7

@Glide No hay problema. La clave era que 'success_url' no estaba documentado en' CreateView', sino en 'ModelFormMixin'. La documentación de Django puede ser difícil de conseguir a veces. – NickAldwin

+0

Ok, así es, el documento es muy bueno, pero hay tantos conceptos aquí ... No siempre es evidente encontrar cosas –

13

también se puede tratar de definir get_absolute_url en sus modelos. Por ejemplo

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 
0

Agregar en las vistas:

def form_valid(self, form): 

    return self.render_to_response(self.get_context_data(form=form)) 
Cuestiones relacionadas