[ 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.

property media

Return all media required to render the widgets on this form.

class horizon.forms.base.SelfHandlingForm(request, *args, **kwargs)[sumber]

Kelas bentuk dasar yang mencakup pemrosesan logika dalam subclassnya.

api_error(message)[sumber]

Menambahkan kesalahan ke kamus kesalahan formulir.

Ini dapat digunakan setelah validasi berdasarkan masalah yang dilaporkan melalui API. Ini berguna ketika Anda ingin agar kesalahan API muncul sebagai kesalahan pada form daripada menggunakan kerangka pesan.

property media

Return all media required to render the widgets on this form.

set_warning(message)[sumber]

Mengatur peringatan pada form.

Tidak seperti NON_FIELD_ERRORS, ini tidak gagal validasi form.

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

alias of DynamicSelectWidget

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.

render(*args, **kwargs)[sumber]

Jadikan (render) widget sebagai string HTML.

class horizon.forms.fields.DynamicTypedChoiceField(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]

Campuran sederhana dari DynamicChoiceField dan TypedChoiceField.

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.
clean(value)[sumber]

Validasikan nilai yang diberikan dan kembalikan nilainya "cleaned" sebagai objek Python yang sesuai. Naikkan ValidationError untuk errors apa pun.

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

clean(value)[sumber]

Validasikan nilai yang diberikan dan kembalikan nilainya "cleaned" sebagai objek Python yang sesuai. Naikkan ValidationError untuk errors apa pun.

class horizon.forms.fields.MultiIPField(*args, **kwargs)[sumber]

Memperluas IPField untuk memungkinkan daftar alamat yang dipisahkan koma.

clean(value)[sumber]

Validasikan nilai yang diberikan dan kembalikan nilainya "cleaned" sebagai objek Python yang sesuai. Naikkan ValidationError untuk errors apa pun.

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')
    ])
build_attrs(extra_attrs=None, **kwargs)[sumber]

Fungsi pembantu untuk membangun kamus atribut.

render(name, value, attrs=None, renderer=None)[sumber]

Jadikan (render) widget sebagai string HTML.

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.ThemableCheckboxChoiceInput(*args, **kwargs)[sumber]
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.

render(name, value, attrs=None, renderer=None)[sumber]

Jadikan (render) widget sebagai string HTML.

class horizon.forms.fields.ThemableChoiceField(*, choices=(), **kwargs)[sumber]

Bootstrap berdasarkan pilih field.

widget

alias of ThemableSelectWidget

class horizon.forms.fields.ThemableDynamicChoiceField(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]
widget

alias of ThemableDynamicSelectWidget

class horizon.forms.fields.ThemableDynamicSelectWidget(attrs=None, choices=(), data_attrs=(), transform=None, transform_html_attrs=None)[sumber]
class horizon.forms.fields.ThemableDynamicTypedChoiceField(add_item_link=None, add_item_link_args=None, *args, **kwargs)[sumber]

Campuran sederhana dari ThemableDynamicChoiceField & TypedChoiceField.

class horizon.forms.fields.ThemableSelectWidget(attrs=None, choices=(), data_attrs=(), transform=None, transform_html_attrs=None)[sumber]

Bootstrap basis pilih widget field.

render(name, value, attrs=None, renderer=None, choices=())[sumber]

Jadikan (render) widget sebagai string HTML.

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.ModalFormMixin(*args, **kwargs)[sumber]
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 dan template_name minimum.

Lihat dokumentasi Django di kelas FormView untuk rincian lebih lanjut.

form_invalid(form)[sumber]

Jika formulir tidak valid, render formulir yang tidak valid.

form_valid(form)[sumber]

Jika formulirnya valid, alihkan ke URL yang disediakan.

get_context_data(**kwargs)[sumber]

Masukkan form ke dalam kamus konteks.

get_form(form_class=None)[sumber]

Mengembalikan instance form yang akan digunakan dalam tampilan ini.

get_object_display(obj)[sumber]

Mengembalikan nama tampilan dari objek yang dibuat.

Untuk penyisipan dinamis sumber daya yang dibuat dalam modals, metode ini mengembalikan nama tampilan dari objek yang dibuat. Default untuk mengembalikan atribut name.

get_object_id(obj)[sumber]

Mengembalikan ID dari objek yang dibuat.

Untuk penyisipan dinamis sumber daya yang dibuat dalam modals, metode ini mengembalikan id dari objek yang dibuat. Default untuk mengembalikan atribut id.

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.