@paevlk2007

Django — создать форму и перейти в ее детализацию?

Все привет!

Почему при создании формы:

def contact_add(request, template_name="contact_add.html"):
    if request.method == 'POST': 
        form = ContactForm(request.POST)
        if form.is_valid():
            # ...
            return HttpResponseRedirect(revers('contact_details')) 
    else:
        form = ContactForm()
    return render(request, template_name, {'form': form, })

def contact_details(request, contact_id, template_name="contact_details.html"):
    contact_details = get_object_or_404(Contact, id=contact_id)
    ctx = {'contact_details': contact_details}
    return render(request, template_name, ctx)
urls.py

url(r'^add/$', views.contact_add, name='accessories_add'),
url(r'^detail/(?P<contact_id>\d+)/$', views.contact_details, name='contact_details'),


Ошибка: Reverse for 'contact_details' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['detail/(?Pcontact_id\d+)/$']

Видимо форма еще не сохранилась, а мы уже требуем ее id.

Есть выход???
  • Вопрос задан
  • 2314 просмотров
Решения вопроса 1
Rrooom
@Rrooom
...
obj = form.save()
...
return HttpResponseRedirect(reverse('contact_details', args=(obj.id)))
...


Внимательнее читайте долки. В урле есть обязательный аргумент - Id записи, reverse сам должен догадаться какой?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы