form类的init方法来实现。
class LoginForm(forms.Form):
username = forms.CharField(
min_length=8,
label="用户名",
initial="张三",
error_messages={
"required": "不能为空",
"invalid": "格式错误",
"min_length": "用户名最短8位"
}
...
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
for field in iter(self.fields):
self.fields[field].widget.attrs.update({
'class': 'form-control'
})
简单写一个小项目:book表的添加和数据展示
views.py内容如下:
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
from django import forms
# Create your views here.
class BookForm(forms.Form):
title = forms.CharField(
max_length=16,
label='书名:',
initial='zhang',
# widget = forms.widgets.PasswordInput(attrs={'class': 'form-control'},render_value=True),
widget = forms.widgets.TextInput(attrs={'class': 'form-control'},),
)
# title2 = forms.CharField(
# max_length=16,
# label='书名:',
# initial='zhang',
# # widget = forms.widgets.PasswordInput(attrs={'class': 'form-control'},render_value=True),
# widget=forms.widgets.TextInput(attrs={'class': 'form-control'}, ),
#
# )
sex = forms.ChoiceField(
choices=(
('1','男'),
('2','女'),
)
,
label='性别:',
# widget=forms.widgets.RadioSelect(),
# widget=forms.widgets.RadioSelect(),
# widget=forms.widgets.SelectMultiple(attrs={'class':'form-control'}),
widget=forms.widgets.Select(attrs={'class':'form-control'}),
# widget=forms.widgets.CheckboxInput(),
# widget=forms.widgets.CheckboxSelectMultiple(),
)
publishDate = forms.DateField(
label='出版日期:',
widget=forms.widgets.TextInput(attrs={'type':'date','class':'form-control'}),
)
price=forms.DecimalField(
max_digits=5,
decimal_places=2,
label='书籍的价格:',
widget=forms.widgets.NumberInput(attrs={'class': 'form-control'}
))
# publish = forms.ModelChoiceField(
# label='出版社:',
# queryset=models.Publish.objects.all(),
# widget=forms.widgets.Select(attrs={'class': 'form-control'}
# ))
publish_id = forms.ChoiceField(
label='出版社:',
widget=forms.widgets.Select(attrs={'class': 'form-control'}
))
authors = forms.ModelMultipleChoiceField(
queryset=models.Author.objects.all(),
widget = forms.widgets.SelectMultiple(attrs={'class': 'form-control'}
))
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['publish_id'].choices = models.Publish.objects.values_list('pk','name')
def index(request):
if request.method == 'GET':
form_obj = BookForm()
return render(request,'index.html',{'form_obj':form_obj})
else:
print(request.POST)
form_obj = BookForm(request.POST)
print(form_obj.is_valid())
print(form_obj.errors)
if form_obj.is_valid():
print(form_obj.cleaned_data)
authors_obj = form_obj.cleaned_data.pop('authors')
new_book_obj = models.Book.objects.create(**form_obj.cleaned_data)
new_book_obj.authors.add(*authors_obj)
return redirect('show')
else:
print(form_obj.errors)
return render(request,'index.html',{'form_obj':form_obj})
def show(request):
book_objs = models.Book.objects.all()
return render(request,'show.html',{'book_objs':book_objs})
def edit_book(request,n):
return HttpResponse('欢迎来到