Django中的form模块的高级处理

forms高级处理

使用原理:将ModelsForms结合到一起使用,Forms中的类和Models中的类关联到一起,实现属性的共享

 

使用步骤:

  1. forms.py中创建class 继承自forms.ModelForm
  2. 创建内部类:Meta,关联FormModel

属性:

  1. model:指定要关联的Model
  2. Fields:指定从Models中取哪些字段生成控件
    1. 取值’__all__’,全部的属性都要生成控件
    2. 取值为列表,声明允许生成控件的属性名称
    3. labels:指定每个属性所关联的label取值为字典

Label={‘字段名’label文字’}

下面用一个简单的登录实例来记录一下他的使用方法:

login.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>{{ messagebox }}
<form action="/11_register/" method="post">
{% csrf_token %}
{{ form.as_p }}
<p>
<input type="submit" value="登录">

</p>

</form>
</body>
</html>

forms.py

 1 class userloginForm(forms.ModelForm):
 2     class Meta:
 3         #1.指定关联的model(记得要引入models.py)
 4         model=user
 5         #指定要生成控件的字段
 6         fields=['uname','upwd']
 7         # 指定每个控件的label
 8         labels={
 9             'uname':'用户名:',
10             'upwd':'密码',
11         }

views.py

 1 def login_view1(request):
 2     if request.method=='GET':
 3         form=userloginForm()
 4         return render(request,'newlogin.html',locals())
 5     else:
 6         form = userloginForm()
 7         if form.is_valid():
 8             values=form.cleaned_data
 9             uname=values['uname']
10             upwd=values['upwd']
11             ulist = user.objects.filter(uname=uname, upwd=upwd)
12             if ulist:
13                 return HttpResponse('登录成功')
14             else:
15                 messagebox='登录失败'
16                 return  render(request,'newlogin.html',locals())

 

 

 

 

posted @ 2018-08-31 10:53  Python_Boy  阅读(187)  评论(0编辑  收藏  举报