webentwicklung-frage-antwort-db.com.de

Django - Klassenbasierte generische Ansicht - "Keine URL zum Weiterleiten"

Ich verwende das generische CreateView wie:

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

Mit einer mymodel_form.html-Vorlage wie:

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

Wenn ich mein Formular absende, wird das neue Objekt erstellt, aber ich erhalte den Fehler

Nicht korrektKonfiguriert am ...

Keine URL zu Weiterleiten an. Geben Sie entweder eine URL oder .__ an. Definiere eine get_absolute_url-Methode für das Model.

Wie kann ich die URL angeben, die bei Erfolg umgeleitet werden soll?

41

Haben Sie versucht, success_url zu übergeben? z.B.

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

oder wenn Sie zu einer benannten Ansicht umleiten möchten:

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

sie können auch versuchen, get_absolute_url in Ihren Modellen zu definieren. Zum Beispiel

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

In Ansichten hinzufügen:

def form_valid(self, form):

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