Si no desea agregar ningún código al formulario (como se menciona en los comentarios a la respuesta de @ shadfc), ciertamente es posible, aquí hay dos opciones.
Primero, solo hace referencia a los campos individualmente en el HTML, en lugar de todo el formulario a la vez:
<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>
(Tenga en cuenta que también lo cambié a una lista sin ordenar ).
En segundo lugar, tenga en cuenta en los documentos sobre la salida de formularios como HTML , Django:
El id del campo se genera anteponiendo 'id_' al nombre del campo. Los atributos de identificación y las etiquetas se incluyen en la salida de forma predeterminada.
Todos sus campos de formulario ya tienen una identificación única . Por lo tanto, debe hacer referencia a id_subject en su archivo CSS para diseñar el campo de asunto . Debo señalar que así es como se comporta el formulario cuando toma el HTML predeterminado , lo que requiere simplemente imprimir el formulario, no los campos individuales:
<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>
Consulte el enlace anterior para ver otras opciones al generar formularios (puede hacer tablas, etc.).
Nota: Me doy cuenta de que esto no es lo mismo que agregar una clase a cada elemento (si agregó un campo al Formulario, también necesitaría actualizar el CSS), pero es bastante fácil hacer referencia a todos los campos por ID en tu CSS así:
#id_subject, #id_email, #email_message
{color: red;}