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 для перенаправления на успех?
Ответы
Ответ 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')
]