I form in Django
Le viste per i form
Utilizzeremo le viste generiche per i form già definite in Django, personalizzandone alcuni elementi.
Per la creazione di un nuovo commento
Creiamo la vista/form nel file didattica/views.py.
from django.views.generic.edit import CreateView
from django.core.urlresolvers import reverse_lazy
from .models import Comment
class CommentCreate(CreateView):
model = Comment
fields = [ 'body', 'date', 'course', ]
Il template sarà definito in un nuovo file che creiamo nella cartella didattica/templates/didattica/ dal nome comment_form.html.
Inseriamo al suo interno il seguente codice HTML:
<!DOCTYPE html>
<html>
<body>
<h1>Write a comment</h1>
<form action="" method="post">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" value="Submit">
</form>
</body>
</html>
L'URL per accedere al form
Occorre anche modificare il file didattica/urls.py per definire l'URL che ci permette di accedere alla pagina del form. In tale file aggiungiamo il seguente URL alla lista urlpatterns (fate attenzione all'indentazione, deve essere indentato come le righe precedenti!):
url(r'comments/add/$', views.CommentCreate.as_view(), name='comment-add'),
Approfondimento
Attraverso i form è anche possibile eseguire altre operazioni sui commenti, in particolare l'aggiornamento e la cancellazione di un commento.
Ciò prevede la definizione di altre due viste, rispettivamente CommentUpdate e CommentDelete, e dei seguenti URL:
url(r'comments/(?P<pk>[0-9]+)/update$', views.CommentUpdate.as_view(),
name='comment-update'),
url(r'comments/(?P<pk>[0-9]+)/delete/$', views.CommentDelete.as_view(),
name='comment-delete'),