Django 1.10.5
Erstens form.py, die die Quelle der Form ist Es gibt auch eine Möglichkeit, ModelForm zu verwenden, aber dieses Mal werden wir etwas erstellen, das in form.py vervollständigt wird
form.py
from django import forms
from django.contrib.admin import widgets
import os
CHOICE = {
('0','süß'),
('1','cool'),
('2','Leidenschaft'),
}
form SampleForm(forms.Form):
select = forms.ChoiceField(label='Attribut', widget=forms.RadioSelect, choices= CHOICE, initial=0)
Sie können die standardmäßig ausgewählten Elemente angeben, indem Sie "initial = index" festlegen
Wenn required = False
keine Auswahl erfordert, ist es besser, sie zu entfernen.
Dieses Mal werde ich einfach eine Ansicht schreiben, die nur dieses Formular besteht
views.py
from django.shortcuts import render, get_object_or_404, redirect
from forms.forms import *
def sample_view(request):
form = SampleForm
return render(request,
project/sample.html,
{"form" : form}
)
Wie es ist Machen wir das
sample.html
{{ form }}
Grundsätzlich ist dies alles, was Sie benötigen. Wenn Sie jedoch mehrere Eingabeelemente in einem Formular haben, können Sie diese wie folgt einzeln steuern.
sample.html
{{ form.select.label }}{{ form.select}}
Attribut
<ul id="id_select">
<li>
<label for="id_select_0">
<input checked="checked" id="id_select_0" name="purpose" type="radio" value="0" />
süß
</label>
</li>
<li>
....
</ul>
Wie unter Offizielle Referenz beschrieben, können Sie das Markup steuern, das durch genaueres Drehen mit generiert wird. können Zum Beispiel, wenn Sie wie folgt vorgehen
sample.html
{{ form.select.label }}
{% for radio in form.select %}
{{ radio.tag }}
<label>{{ radio.choice_label }}</label>
{% endfor %}
Produziert etwas, das überschaubar ist (und sein wird)
Attribut
<input checked="checked" id="id_select_0" name="select" type="radio" value="0" />
<label>süß</label>
<input id="id_select_1" name="select" type="radio" value="1" />
<label>cool</label>
...
sample.html
{{ form.select.label }}
{% for radio in form.select %}
{{ radio.tag }}
<label for="id_select_{{ radio.index }}">{{ radio.choice_label }}</label>
{% endfor %}
Wenn du das tust
Attribut
<input checked="checked" id="id_select_0" name="select" type="radio" value="0" />
<label for="id_select_0">süß</label>
<input id="id_select_1" name="select" type="radio" value="1" />
<label for="id_select_1">cool</label>
...
Ja
Recommended Posts