我有一個在 Django 應用程式中顯示的表單。此表單有許多欄位。
為了使 UI 更直觀,我希望不只是一個接一個地顯示欄位,而是分組為部分 - 無論是在一個框中,還是通過使用水平線或更大的間距或自定義文本等分隔部分。
我的主要興趣是使子組彼此明顯分開。能夠使用一些文本(基本上是沒有附加欄位的標簽)作為部分分隔符將是一個受歡迎的獎勵。
我怎樣才能做到這一點?
當前示例代碼:
forms.py:
from django import forms
class MyForm(forms.Form):
color1 = forms.CharField()
items_color1 = forms.CharField()
# some devider here
color2 = forms.CharField()
items_color2 = forms.CharField()
mypage.html:
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td><input type="submit" value="Submit" id="form_field" name="submit_btn"></td>
</tr>
</table>
(我對 Django 很陌生。我以前的 GUI 經驗主要是 PyQt5。)
uj5u.com熱心網友回復:
你是幸運的,我的朋友。
看看 Django Crispy Forms。使用此產品,您可以在表單定義中以編程方式控制表單的布局。
將 Django Crispy Forms 安裝到虛擬環境中后,您必須在設定檔案中添加一行才能使用它:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
...
'crispy_forms',
...
]
完成此操作后,您將能夠在應用程式中使用 django 脆皮表單。
您發布的示例表單在forms.py檔案中可能如下所示:
from django import forms
from crispy_forms.bootstrap import FormActions
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Field, HTML, Layout, Submit
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.fields['color1'].label = 'Color 1:'
self.fields['items_color1'].label = 'Color 1 Items:'
self.fields['color2'].label = 'Color 2:'
self.fields['items_color2'] = 'Color 2 Items:'
# You can dynamically adjust your layout
self.helper.layout = Layout(Field('color1),
Field('items_color1),
HTML(<hr>),
Field('color2'),
Field('items_color2),
FormActions(Submit('save', 'Save changes')))
You would style it in your CSS.
Here are some nice examples using Django Crispy Forms.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437166.html
