Django Form组件
一、使用模板对数据进行传递
1、view.py
def class_list(request):
cla_list=models.Classes.objects.all()
return render(request,‘cla_list.html/’,{‘cla_list’:cla_list})
其中,
2、HTML
- {% for row in cla_list %}
- {{row.classname}}
- {% endfor %} 添加 删除 修改
1、定义Form组件类,创建form组件可以在view.py中创建,也可以通过自定义myform.py文件进行创建
class Classesform(forms.Form):
classname=fields.CharField(min_length=4,max_length=8)
注;可以通过设置widgets来将文本框设置为下拉框
2、具体实现:
from django.forms import widgets
form设置:
cls_id = fields.IntegerField(widget=widgets.Select(choices=[(1,‘一年级1班’),(2,‘二年级2班’)]))
html效果:
3、在数据库中存储元组类型数据
模块objects主要方法:
models.Student.objects.all(): 返回QuerySet 类型数据,类似于 list,里面放的是一个个模型类的对象,可用索引下标取出模型类的对象。
models.Student.objects.values():返回的是 QuerySet 类型数据,类似于 list,是一个可迭代的字典序列,字典里的键是字段,值是数据。
models.Student.objects.values_list() :返回的是 QuerySet 类型数据,类似于 list,是一个个元组,元组里放的是查询字段对应的数据。
在数据库中如何存储(1,'一年级1班')**,**(2,'二年级2班')类似的元组
cls_id = fields.IntegerField(widget=widgets.Select(choices=models.Classes.objects.values_list('id', 'classname')))
2、在view.py中创建Form组件对象并进行使用
if request.method == 'GET':
stuobj = Studentform()
return render(request, 'add_stu.html/', {'stuobj': stuobj})
else:
stuobj = Studentform(request.POST)
if stuobj.is_valid():
stu_dic = stuobj.cleaned_data
print(stu_dic)
# id=stu_list.id
models.Student.objects.create(stuname=stu_dic['stuname'],
stunumber=stu_dic['stunumber'],
stuemail=stu_dic['stuemail'],
stuage=stu_dic['stuage'],
cls_id=stu_dic['cls_id'])
return redirect('/stu_list/')
else:
return render(request, 'add_stu.html/', {'stuobj': stuobj})
三、Form组件注意事项
1、创建Form组件后,对象会自动生成文本框
2、创建Form组件时字段名称和数据库保持一致性