Подтвердить что ты не робот

Django - Class Based Generic View - "Нет 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 для перенаправления на успех?

4b9b3361

Ответ 1

Пробовали ли вы проходить через success_url? например.

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

или если вы хотите перенаправить на именованный вид:

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

Ответ 2

вы также можете попытаться определить 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 

Ответ 3

Добавить в представлениях:

def form_valid(self, form):

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

Ответ 4

views.py/

from django.views.generic import CreateView
from .models import myModel

class createView(CreateView):
    model = myModel
    fields = ['your fields', ...'']

    def get_success_url(self):
        return reverse('some_url')

urls.py/(из вашего приложения)

from django.urls import path
from . import views

urlpatterns = [
    path('create/', views.createView.as_view(), name='create') 
]