if request.method == 'GET'

Наконец-то я понял, почему пишут так

def item_view(request, id):
    item = get_object_or_404(Item, id=id)
    if request.method == 'POST':
        form = ItemForm(request.POST, instance=answer)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(item.get_absolute_url())
    else:
        form = ItemForm(instance=item)
    return render('item.html', {'item': item, 'form': form})

и не пишут вот так

def item_view(request, id):
    item = get_object_or_404(Item, id=id)
    if request.method == 'GET':
        form = ItemForm(instance=item)
    elif request.method == 'POST':
        form = ItemForm(request.POST, instance=answer)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(item.get_absolute_url())            
    return render('item.html', {'item': item, 'form': form})

Второй вариант хоть и более выразительный, но не учитывает такие http methods как HEAD. А HEAD частенько шлются всякими программами и фейсбуками про постинге ссылки (чтобы проверить, что ссылка действительно рабочая).

comments powered by Disqus