web-dev-qa-db-ja.com

Django-クラスベースの汎用ビュー-「リダイレクトするURLがありません」

私は次のような汎用のCreateViewを使用しています:

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

次のようなmymodel_form.htmlテンプレートを使用します。

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

フォームを送信すると、新しいオブジェクトが作成されますが、エラーが発生します

不適切な設定...

リダイレクト先のURLはありません。 URLを提供するか、モデルでget_absolute_urlメソッドを定義します。

成功時にリダイレクトするURLを指定するにはどうすればよいですか?

46

success_url?例えば.

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

または、名前付きビューにリダイレクトする場合:

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

モデルでget_absolute_urlを定義することもできます。例えば

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

ビューに追加します。

def form_valid(self, form):

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