form表单封装使用
1.在子模块下创建forms.py文件,
然后创建类, label="姓名"目的把输入框前的英文改为中文
from django import forms
class UserForm(forms.Form):
name = forms.CharField(max_length=40, min_length=2, label="姓名")
age = forms.IntegerField(label="年龄")
2.在视图中,1.导入forms模块,2.创建实例,3.把实例变量通过render()传入HTML页面中
3.在HTML页面中,
(1)使用post请求,
(2)添加enctype="multipart/form-data",#就是编码类型的意思。
multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思
(3){{ userform.as_ul}} 加上.as_ul之后,input框会换行,前面有黑圆点类型li
4.视图中获取post请求提交的数据
form = forms.UserForm(request.POST)
print(form.data['name']) #1.获取提交的用户名
name = request.POST.get("name") #2.获取提交的用户名,也可以使用
user = models.User(name=form.data['name'], age=form.data['age']) 创建用户对象实例,然后保存
from . import forms
def register(request):
if request.method == "GET":
# 1.创建form类的实例
userform = forms.UserForm()
return render(request, "myblog/register.html", {"userform": userform})
elif request.method == "POST":
# 2.获取form提交的数据内容
form = forms.UserForm(request.POST)
print(form.data['name'])
# 2.下面方法也可以获取到请求内容,然后存入数据库
# name = request.POST.get("name")
# age = request.POST.get("age")
# print(name, age)
try:
# user = models.User(name=name, age=age)
user = models.User(name=form.data['name'], age=form.data['age'])
user.save()
return HttpResponse("注册成功")
except:
return HttpResponse("注册失败")