J'utilise Twitter Bootstrap avec Django pour rendre les formulaires.
Bootstrap
peut mettre en forme vos formulaires de manière tout à fait satisfaisante, pour autant que vous disposiez de l'adresse de l'entreprise. CSS
les classes qu'il s'attend à voir incluses.
Cependant, mon problème est que les formulaires générés par le module de Django {{ form.as_p }}
n'ont pas un bon rendu avec Bootstrap, car ils ne disposent pas de ces classes.
Par exemple, la sortie de Django :
<form class="horizontal-form" action="/contact/" method="post">
<div style='display:none'>
<input type='hidden' name='csrfmiddlewaretoken'
value='26c39ab41e38cf6061367750ea8c2ea8'/>
</div>
<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" value="FOOBAR" maxlength="20" /></p>
<p><label for="id_directory">Directory:</label> <input id="id_directory" type="text" name="directory" value="FOOBAR" maxlength="60" /></p>
<p><label for="id_comment">Comment:</label> <textarea id="id_comment" rows="10" cols="40" name="comment">Lorem ipsum dolor sic amet.</textarea></p>
<p>
<label for="id_server">Server:</label>
<select name="server" id="id_server">
<option value="">---------</option>
<option value="1"
selected="selected">sydeqexcd01.au.db.com</option>
<option value="2">server1</option>
<option value="3">server2</option>
<option value="4">server3</option>
</select>
</p>
<input type="submit" value="Submit" />
</form>
D'après ce que je peux dire, Bootstrap exige que vos formulaires aient un fichier <fieldset class="control-group">
chaque <label>
tiene class="control-label"
et chaque <input>
est enveloppé dans un <div>
:
<fieldset class="control-group">
<label class="control-label" for="input01">Text input</label>
<div class="controls">
<input type="text" class="xlarge" name="input01">
<p class="help-text">Help text here. Be sure to fill this out like so, or else!</p>
</div>
</fieldset>
Cependant, l'ajout d'étiquettes CSS personnalisées à chaque champ de formulaire dans Django est plutôt pénible :
Ajouter une classe à la sortie label_tag() de Django
Existe-t-il une manière plus intelligente d'utiliser soit {{ form.as_p }}
ou d'itérer à travers les champs, sans avoir à spécifier manuellement des choses, ou à faire tout un tas de piratages ?
A la vôtre, Victor
2 votes
Vous pouvez consulter django-bootstrap-form et/ou django-bootstrap Faites-nous savoir lequel vous utilisez et pourquoi !
1 votes
Django-bootstrap-form semble être très peu fonctionnel pour le moment. django-bootstrap est très prometteur, cependant, et utilise l'approche correcte pour django pour autant que je puisse dire. Cela vaudrait vraiment la peine d'y contribuer.
2 votes
Voir aussi stackoverflow.com/questions/18158293/