2011-06-07 83 views
37

我使用的是通用的CreateView的一樣:Django的 - 基於類的通用視圖 - 「沒有URL重定向到」

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

當我提交我的形式,創建新的對象,但我得到的錯誤

ImproperlyConfigured在...

沒有到 重定向到的URL。提供一個url或 定義一個get_absolute_url方法的 模型。

如何指定要成功重定向的url?

回答

64

您是否嘗試過success_url?例如

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

,或者如果你想重定向到一個命名視圖:

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

這就是我忘了。謝謝 – 2011-06-07 14:20:08

+7

@Glide沒問題。關鍵在於'success_url'沒有記錄在'CreateView'下,而是'ModelFormMixin'下。 Django文檔有時可能很難實現。 – NickAldwin 2011-06-07 14:21:20

+0

好吧,沒錯,文檔真的很好,但這裏有這麼多的概念...找不到明顯的東西 – 2011-06-07 14:39:27

13

你也可以嘗試在你的模型來定義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 
0

添加在訪問量:

def form_valid(self, form): 

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