[ English | 中文 (简体, 中国) | русский | português (Brasil) | नेपाली | 한국어 (대한민국) | Indonesia | français | español | esperanto | English (United Kingdom) | Deutsch ]
Horizon Forms¶
Horizon memuat dengan beberapa item dasar yang sangat berguna untuk form classes, form fields, class-based views, dan javascript helpers yang merampingkan sebagian besar tugas umum yang terkait dengan penanganan formulir.
Panel Classes (kelas panel)¶
-
class
horizon.forms.base.
DateForm
(*args, **kwargs)[sumber]¶ Bentuk sederhana untuk memilih rentang waktu.
-
class
horizon.forms.base.
SelfHandlingForm
(request, *args, **kwargs)[sumber]¶ Kelas bentuk dasar yang mencakup pemrosesan logika dalam subclassnya.
Form Fields¶
-
class
horizon.forms.fields.
ChoiceInput
(name, value, attrs, choice, index)[sumber]¶ Kelas ChoiceInput dari basis kode django 1.10.7
Objek yang digunakan oleh ChoiceFieldRenderer yang mewakili satu <input type='$input_type'>.
-
class
horizon.forms.fields.
DynamicChoiceField
(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]¶ ChoiceField yang membuat pembaruan elemen secara dinamis lebih mudah.
Khususnya, deklarasi lapangan membutuhkan argumen tambahan,
add_item_link
yang mungkin berupa string atau callable yang mendefinisikan URL yang harus digunakan untuk tautan "add" yang terkait dengan field tersebut.-
widget
¶
-
-
class
horizon.forms.fields.
DynamicSelectWidget
(attrs=None, choices=(), data_attrs=(), transform=None, transform_html_attrs=None)[sumber]¶ ``Select `` widget untuk menangani perubahan dinamis pada pilihan yang tersedia.
Sebuah subkelas dari widget
Select
yang membuat atribut tambahan untuk digunakan dalam callback untuk menangani perubahan dinamis pada pilihan yang tersedia.
-
class
horizon.forms.fields.
DynamicTypedChoiceField
(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]¶ Campuran sederhana dari
DynamicChoiceField
danTypedChoiceField
.
-
class
horizon.forms.fields.
ExternalFileField
(*args, **kwargs)[sumber]¶ FileField khusus untuk mengunggah file ke beberapa lokasi eksternal.
Ini adalah flavor khusus FileField yang dimaksudkan untuk digunakan dalam kasus sebagai ganti mengupload file ke Django, itu harus diunggah ke beberapa lokasi eksternal, sementara validasi form dilakukan seperti biasa. Ini harus dipasangkan dengan metaclass ExternalUploadMeta yang disematkan ke kelas Form.
-
class
horizon.forms.fields.
ExternalUploadMeta
(name, bases, attrs)[sumber]¶ Metaclass untuk memproses field ExternalFileField dengan cara tertentu.
Setel kelas ini sebagai metaclass dari form yang berisi ExternalFileField untuk memproses field ExternalFileField dengan cara tertentu. Sebuah kembar CharField yang tersembunyi dari FieldField dibuat yang hanya berisi nama file (jika ada file yang dipilih di sisi browser) dan metode clean khusus untuk FileField didefinisikan yang hanya mengekstrak nama file. Ini memungkinkan untuk menghindari upload file yang sebenarnya ke server Django, namun proses form clean() fase seperti biasa. Upload file yang sebenarnya terjadi sepenuhnya di sisi-klien.
-
class
horizon.forms.fields.
IPField
(*args, **kwargs)[sumber]¶ Form field untuk memasukkan nilai IP/range, dengan validasi.
Mendukung IPv4/IPv6 dalam format: .. xxx.xxx.xxx.xxx .. xxx.xxx.xxx.xxx/zz .. ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff .. ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/zz dan semua bentuk terkompresi. Juga bentuk-bentuk singkat yang didukung: xxx/yy xxx.xxx/yy
-
version
¶ Menentukan versi IP mana yang memvalidasi, nilai yang valid adalah 1 (fields.IPv4), 2 (fields.IPv6) atau keduanya - 3 (fields.IPv4 | fields.IPv6). Default ke IPv4 (1)
-
mask
¶ Boolean flag untuk memvalidasi subnet mask bersama dengan alamat IP. Misal: 10.0.0.1/32
-
mask_range_from
¶ -
Subnet range limitation, e.g. 16
-
That means the input mask will be checked to be in the range
-
16:max_value. Useful to limit the subnet ranges
-
to A/B/C-class networks.
-
-
class
horizon.forms.fields.
MACAddressField
(*, required=True, widget=None, label=None, initial=None, help_text='', error_messages=None, show_hidden_initial=False, validators=(), localize=False, disabled=False, label_suffix=None)[sumber]¶ Form field untuk memasukkan alamat MAC dengan validasi.
Mendukung semua format yang dikenal oleh netaddr.EUI (), misalnya: .. xx:xx:xx:xx:xx:xx .. xx-xx-xx-xx-xx-xx .. xxxx.xxxx.xxxx
-
class
horizon.forms.fields.
MultiIPField
(*args, **kwargs)[sumber]¶ Memperluas IPField untuk memungkinkan daftar alamat yang dipisahkan koma.
-
class
horizon.forms.fields.
SelectWidget
(attrs=None, choices=(), data_attrs=(), transform=None, transform_html_attrs=None)[sumber]¶ Pilih widget khusus.
Hal ini memungkinkan untuk membuat atribut data-xxx dari pilihan. Widget ini juga memungkinkan pengguna untuk menentukan atribut html tambahan untuk pilihan.
-
data_attrs
¶ Menentukan properti objek untuk bersambung sebagai atribut data-xxx. Jika dilewatkan ('id',), ini akan ditampilkan sebagai: <option data-id="123">option_value</option> di mana 123 adalah nilai choice_value.id
-
transform
¶ Sebuah callable digunakan untuk membuat nilai tampilan dari objek opsi.
-
transform_html_attrs
¶ Sebuah callable digunakan untuk membuat atribut HTML tambahan untuk objek opsi. Ini mengembalikan kamus yang berisi atribut html dan nilainya. Misalnya, untuk menentukan atribut judul untuk choices:
helpText = { 'Apple': 'This is a fruit', 'Carrot': 'This is a vegetable' } def get_title(data): text = helpText.get(data, None) if text: return {'title': text} else: return {} .... .... widget=forms.ThemableSelect( attrs={'class': 'switchable', 'data-slug': 'source'}, transform_html_attrs=get_title ) self.fields[<field name>].choices = ([ ('apple','Apple'), ('carrot','Carrot') ])
-
-
class
horizon.forms.fields.
SubWidget
(parent_widget, name, value, attrs, choices)[sumber]¶ Kelas SubWidget dari basis kode django 1.10.7
Beberapa widget terbuat dari beberapa elemen HTML - yaitu, RadioSelect. Ini adalah kelas yang mewakili elemen HTML "inner" dari sebuah widget.
-
class
horizon.forms.fields.
ThemableCheckboxInput
(attrs=None, check_test=None)[sumber]¶ Widget kotak centang (checkbox) yang membuat markup ekstra.
Ini digunakan untuk memungkinkan pengalaman kotak centang khusus.
-
class
horizon.forms.fields.
ThemableChoiceField
(*, choices=(), **kwargs)[sumber]¶ Bootstrap berdasarkan pilih field.
-
widget
¶
-
-
class
horizon.forms.fields.
ThemableDynamicChoiceField
(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]¶ -
widget
¶
-
-
class
horizon.forms.fields.
ThemableDynamicSelectWidget
(attrs=None, choices=(), data_attrs=(), transform=None, transform_html_attrs=None)[sumber]¶
Form Views¶
-
class
horizon.forms.views.
ModalBackdropMixin
(*args, **kwargs)[sumber]¶ Kelas Mixin untuk memungkinkan ModalFormView dan WorkflowView bersama.
Kelas mixin ini akan digunakan bersama dengan kelas ModalFormView dan WorkflowView untuk menambahkannya dengan data konteks modal_backdrop.
-
class
horizon.forms.views.
ModalFormView
(*args, **kwargs)[sumber]¶ Kelas tampilan utama untuk semua tampilan yang menangani form di Horizon.
Semua pandangan (view) yang menangani form dalam Horiozn harus mewarisi kelas ini. Ini mengurus semua detail dengan memproses kelas
SelfHandlingForm`
, dan kekhawatiran modal ketika template terkait mewarisi dari horizon/common/_modal_form.html.Subclass harus menetapkan atribut
form_class
dantemplate_name
minimum.Lihat dokumentasi Django di kelas FormView untuk rincian lebih lanjut.
-
get_form
(form_class=None)[sumber]¶ Mengembalikan instance form yang akan digunakan dalam tampilan ini.
-
Forms Javascript¶
Switchable Fields¶
Dengan menandai bidang dengan kelas "switchable"
and "switched"
bersama dengan mendefinisikan beberapa atribut data, Anda secara terprogram dapat menyembunyikan, menampilkan, dan mengganti nama bidang dalam form.
Trigger adalah field menggunakan widget input select
, ditandai dengan kelas "switchable", dan mendefinisikan atribut "data-slug". Ketika mereka diubah, input apa pun dengan kelas "switched"
dan mendefinisikan `` "data-switch-on" `` atribut yang cocok dengan select
input `` "data-slug" `` atribut akan dievaluasi untuk perubahan yang diperlukan. Dalam istilah yang lebih sederhana, jika "switched"
input target `` "switch-on" `` cocok dengan `` "slug" `` dari input pemicu `` "switchable" ``, input akan diaktifkan. Sederhana bukan?
Input `` "switched` `` juga perlu menentukan status. Untuk setiap keadaan di mana input harus ditampilkan, itu harus mendefinisikan atribut data seperti berikut: data-<slug>-<value>="<desired label>"
. Ketika switch event terjadi, nilai bidang `` "switchable" `` akan dibandingkan dengan atribut data dan label yang benar akan diterapkan ke bidang tersebut. Jika label yang sesuai untuk nilai itu not ditemukan, field akan disembunyikan.
Contoh yang disederhanakan adalah sebagai berikut:
source = forms.ChoiceField(
label=_('Source'),
choices=[
('cidr', _('CIDR')),
('sg', _('Security Group'))
],
widget=forms.ThemableSelectWidget(attrs={
'class': 'switchable',
'data-slug': 'source'
})
)
cidr = fields.IPField(
label=_("CIDR"),
required=False,
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'source',
'data-source-cidr': _('CIDR')
})
)
security_group = forms.ChoiceField(
label=_('Security Group'),
required=False,
widget=forms.ThemableSelectWidget(attrs={
'class': 'switched',
'data-switch-on': 'source',
'data-source-sg': _('Security Group')
})
)
Kode itu akan menciptakan `` "switchable" `` field kontrol source
, dan dua `` "switched" `` fields cidr
dan security group
yang disembunyikan atau ditampilkan tergantung pada nilai source
.
Catatan
Field hanya dapat dengan aman mendefinisikan satu slug dalam atribut "switch-on"
-nya. Sementara mengaktifkan beberapa field dimungkinkan, perilaku ini sangat sulit untuk diprediksi karena peristiwa yang dipecat dari berbagai field yang dapat diganti secara berurutan. Anda biasanya berakhir hanya dengan menyembunyikan sebagian besar waktu secara tidak sengaja, jadi tidak disarankan. Alih-alih, tambahkan saja field kedua ke formulir dan kendalikan keduanya secara mandiri, lalu gabungkan hasilnya di metode formulir atau pegangan formulir di bagian akhir.