Ich habe ein Eingabefeld, das mit einer Vorlage wie folgt gerendert wird:
<div class="field">
{{ form.city }}
</div>
Welches wird gerendert als:
<div class="field">
<input id="id_city" type="text" name="city" maxlength="100" />
</div>
Angenommen, ich möchte dem autocomplete="off"
gerenderten Eingabeelement ein Attribut hinzufügen. Wie würde ich das tun? Oder onclick="xyz()"
oder class="my-special-css-class"
?
Entschuldigung für die Werbung, aber ich habe kürzlich eine App veröffentlicht ( https://github.com/kmike/django-widget-tweaks ), die solche Aufgaben noch weniger schmerzhaft macht, sodass Designer dies tun können, ohne den Python-Code zu berühren:
oder alternativ,
quelle
Wenn Sie "ModelForm" verwenden:
quelle
Wenn Sie verwenden, gibt es
ModelForm
, abgesehen von der Möglichkeit,__init__
@Artificioo in seiner Antwort zu verwenden, einwidgets
Wörterbuch in Meta für diese Angelegenheit:Relevante Dokumentation
quelle
Ich wollte nicht eine ganze App für diese Sache verwenden. Stattdessen habe ich hier den folgenden Code gefunden: https://blog.joeymasip.com/how-to-add-attributes-to-form-widgets-in-django-templates/
Verwenden Sie das Tag in der HTML-Datei
quelle
Ich habe einige Tage damit verbracht, wiederverwendbare Formularvorlagen zu erstellen, um Modelle in Django-Formularen zu erstellen und zu aktualisieren. Beachten Sie, dass Sie ModelForm zum Ändern oder Erstellen von Objekten verwenden. Ich benutze auch Bootstrap, um meine Formulare zu stylen. Ich habe in der Vergangenheit für einige Formulare django_form_tweaks verwendet, aber ich musste einige Anpassungen ohne große Vorlagenabhängigkeit vornehmen. Da ich jQuery bereits in meinem Projekt habe, habe ich beschlossen, seine Eigenschaften zu nutzen, um meine Formulare zu gestalten. Hier ist der Code und kann mit jeder Form arbeiten.
Views.py
HTML-Code Hinweis: Ich verwende Bootstrap4 Modal, um den Aufwand beim Erstellen vieler Ansichten zu beseitigen. Vielleicht ist es besser, generisches CreateView oder UpdateView zu verwenden. Verknüpfen Sie Bootstrap und jqQery
Javascript Code Denken Sie daran, dies in
$(document).ready(function() { /* ... */});
Funktion zu laden .quelle