我有三種方法可以想到我的頭頂。
如果您想完全控制HTML表單,請在Django模板或HTML表單中簡單地映射您的字段的名稱,以匹配Django表單中的基礎字段名稱。這樣,當發回你的視圖時,Django會自動將張貼的字段與Django表單域連接起來。
例如,如果你在你的Django形式有場username
(或者Django的模型,如果使用的ModelForm),你可以有一個元素<input type="text" name="username" maxlength="40">
你的HTML表單上(你可以風格,你需要的任何方式)是Django會高高興興解析你的Django表單域,假設你的視圖是正確的。 There is an example of this method in the Django documentation.
另一種方法是在Django表單定義中自定義Django表單字段小部件。 The Django documentation talks a little bit about how to do this。這非常適合一次性使用,但如果您希望重用小部件,可能不是最好的方法。
最後的辦法是將Django表單字段小部件子類自動提供您需要的任何屬性。例如,我們使用Bootstrap,並將幾乎所有我們用來利用Bootstrap類的小部件進行了分類。
class BootstrapTextInput(forms.TextInput):
def __init__(self, attrs=None):
final_attrs = {'class': 'form-control'}
if attrs is not None:
final_attrs.update(attrs)
super().__init__(attrs=final_attrs)
然後它只是讓Django的形式知道哪個小部件使用的表單字段的問題。
class UsernameForm(forms.ModelForm):
class Meta:
model = auth.get_user_model()
fields = ['username']
widgets = {'username': BootstrapTextInput()}
希望這會有所幫助。乾杯!
因爲我不能添加超過2個鏈接:這裏是Django窗體的樣子:http://i.imgur.com/woXXhKu.png – arlyon
你有問題的代碼在哪裏? – obayhan