Si vous ne voulez pas ajouter tout code à la forme (comme mentionné dans les commentaires de la réponse de @shadfc), c'est certainement possible, voici deux options.
Tout d'abord, il suffit de référencer les champs individuellement dans le HTML, plutôt que le formulaire entier en une seule fois :
<form action="" method="post">
<ul class="contactList">
<li id="subject" class="contact">{{ form.subject }}</li>
<li id="email" class="contact">{{ form.email }}</li>
<li id="message" class="contact">{{ form.message }}</li>
</ul>
<input type="submit" value="Submit">
</form>
(Notez que je l'ai également transformé en un fichier non trié. liste .)
Deuxièmement, notez dans les docs sur sortie des formulaires au format HTML Django :
L'identifiant du champ est généré en en ajoutant "id_" au nom du champ. Les attributs et les balises id sont inclus dans la sortie par défaut.
Tous les champs de votre formulaire ont déjà un nom unique id . Ainsi, vous feriez référence id_sujet dans votre fichier CSS pour donner du style à l'élément sujet champ. Je dois noter que c'est ainsi que le formulaire se comporte lorsque vous prenez le champ par défaut HTML, ce qui nécessite d'imprimer uniquement le formulaire, et non les différents champs :
<ul class="contactList">
{{ form }} # Will auto-generate HTML with id_subject, id_email, email_message
{{ form.as_ul }} # might also work, haven't tested
</ul>
Voir le lien précédent pour d'autres options lors de la sortie de formulaires (vous pouvez faire des tableaux, etc.).
Note - Je réalise que ce n'est pas la même chose que d'ajouter un classe à chaque élément (si vous ajoutez un champ au formulaire, vous devez également mettre à jour la feuille de style en cascade), mais il est assez facile de faire référence à tous les champs à l'aide de la commande id dans votre CSS comme ceci :
#id_subject, #id_email, #email_message
{color: red;}