Sur les pages 183 et 184, il y a le code suivant:pratiques Projets Django - Pages 183 et 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)
Pourquoi est-il nécessaire d'ajouter un attribut de données ici:
form = SnippetForm(instance=snippet, data=request.POST)
est-ce pas l'attribut d'instance est-il suffisant?
Si la méthode de requête n'est pas POST, cela peut être n'importe quoi, mais généralement c'est une méthode GET. Pourquoi n'y a-t-il aucun attribut de données dans ce cas? Pourquoi est-il nécessaire de prendre en compte d'autres méthodes de demande? Ne pourrait-on écrire simplement:
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)
Il semble plus logique pour moi de ne pas laisser l'utilisateur de modifier son extrait si la méthode de requête n'est pas POST. Pouvez-vous m'expliquer ces points?
Merci beaucoup à vous deux. – Peter