django-форма показывает данные формы после их сохранения

#python #django #django-forms

#python #django #django-forms

Вопрос:

Я хочу показать пользователю те же данные, которые он опубликовал, используя форму, после сохранения ее в базе данных. Я не понимаю логики для этого.

Я пытаюсь сделать что-то вроде этого:

 def CreateDeal(request):
    if request.method == "POST":
        form = DealForm(request.POST)
        if form.is_valid():
            form.save(commit = True)
            data = form.data
            return render(request, '/path_to/deal_detail.html',data=data)
 

Это нормально?
Есть ли лучший способ сделать это?

Комментарии:

1. Как насчет использования form.cleaned_data вместо этого?

Ответ №1:

Если вы сделаете это таким образом, перенаправление на страницу «подробности» повторно отправит форму. Обычно это нежелательное поведение.

Лучшим способом было бы создать подробное представление для сохраненного вами объекта (если вы еще этого не сделали) и перенаправить пользователя на подробное представление этого конкретного объекта:

 from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

def CreateDeal(request):
    if request.method == "POST":
        form = DealForm(request.POST)
        if form.is_valid():
            obj = form.save(commit=True)
            return HttpResponseRedirect(reverse('deal-detail-view', args=(obj.id,)))
            # or return HttpResponseRedirect(obj.get_absolute_url()) 
            # if `get_absolute_url` is defined