На страницах 183 и 184 есть следующий код:
def edit_snippet(request, snippet_id):
snippet = get_object_or_404(Snippet, pk=snippet_id)
if request.user.id != snippet.author.id:
return HttpResponseForbidden()
if request.method == 'POST':
form = SnippetForm(instance=snippet, data=request.POST)
if form.is_valid():
snippet = form.save()
return HttpResponseRedirect(snippet.get_absolute_url())
else:
form = SnippetForm(instance=snippet)
return render_to_response('cab/snippet_form.html',{ 'form': form, 'add': False })
edit_snippet = login_required(edit_snippet)
Почему необходимо добавить здесь атрибут данных:
form = SnippetForm(instance=snippet, data=request.POST)
Не достаточно ли атрибута экземпляра?
Если метод запроса не POST, тогда это может быть что угодно, но обычно это метод GET.Почему в этом случае нет атрибута данных?Почему необходимо учитывать другие методы запроса?Не могли бы мы просто написать:
def edit_snippet(request, snippet_id):
snippet = get_object_or_404(Snippet, pk=snippet_id)
if request.user.id != snippet.author.id:
return HttpResponseForbidden()
if request.method == 'POST':
form = SnippetForm(instance=snippet, data=request.POST)
if form.is_valid():
snippet = form.save()
return HttpResponseRedirect(snippet.get_absolute_url())
return render_to_response('cab/snippet_form.html',{ 'form': form, 'add': False })
edit_snippet = login_required(edit_snippet)
Мне кажется более логичным не позволять пользователю редактировать свой фрагмент, если метод запроса не POST.Можете ли вы объяснить мне эти моменты?