首页 文章

Django - 基于类的通用视图 - “没有要重定向到的URL”

提问于
浏览
41

我正在使用通用的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?

3 回答

  • 72

    你试过传递 success_url 吗?例如

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

    或者如果要重定向到命名视图:

    CreateView.as_view(model=myModel, success_url=reverse('success-url'))
    
  • 0

    您也可以尝试在模型中定义 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
    
  • 15

    添加视图:

    def form_valid(self, form):
    
       return self.render_to_response(self.get_context_data(form=form))
    

相关问题