您的位置:首页 > 编程语言 > Go语言

Django——form组件

2018-02-02 01:15 399 查看

之前我们已经学习了HTML中的基本标签——form表单,我们经常使用它向后台提交数据,常规的form表单是这样的:

<form action="" method="post">
<p>用户名:<input type="text" name="user"></p>
<p>密码:<input type="text" name="pwd"></p>
<P><input type="submit"></P>
</form>

但是有许多时候我们这样使用非常不方便,为什么这样说了,上面的form表单中只有两个提交项,

但是实际中肯定不止两个,如果使用上面的方式,那么一旦有哪一个提交项不符合规定,整个form表单都得重写,

这是后用户肯定会抱怨,“凭什么错了一个全部得重写”,所以这样不方便,还有一个就是在对输入的东西值进行校验的时候,

每次都得先从前面取值,再在后台校验,烦不烦,能不能在后台生成得时候就设置好了?

这就是jango中form组件可以非常好的解决得问题。下面会一步一步解开解开它得面纱。

 

 

一、在Django中构建一个from表单

下面创建一个最简单的form表单:

from django.shortcuts import render
#导入forms组件
from django import forms

class LoginForm(forms.Form):
user = forms.CharField(max_length=10)
pwd = forms.CharField()

def login(request):
#实例化一个对象
form_obj = LoginForm()
return render(request,"login.html",{"form_obj":form_obj})

在前端页面中展示form_obj:

{{ form_obj.as_p }}

as_p是一个特殊的属性,常见的有:

  • {{ form.as_table }}
     以表格的形式将它们渲染在
    <tr>
     标签中
  • {{ form.as_p }}
     将它们渲染在
    <p>
     标签中
  • {{ form.as_ul }}
     将它们渲染在
    <li>
     标签中

 

下面是效果:

# 单radio,值为字符串
# user = fields.CharField(
#     initial=2,
#     widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),))
# )

# 单radio,值为字符串
# user = fields.ChoiceField(
#     choices=((1, '上海'), (2, '北京'),),
#     initial=2,
#     widget=widgets.RadioSelect
# )

# 单select,值为字符串
# user = fields.CharField(
#     initial=2,
#     widget=widgets.Select(choices=((1,'上海'),(2,'北京'),))
# )

# 单select,值为字符串
# user = fields.ChoiceField(
#     choices=((1, '上海'), (2, '北京'),),
#     initial=2,
#     widget=widgets.Select
# )

# 多选select,值为列表
# user = fields.MultipleChoiceField(
#     choices=((1,'上海'),(2,'北京'),),
#     initial=[1,],
#     widget=widgets.SelectMultiple
# )

# 单checkbox
# user = fields.CharField(
#     widget=widgets.CheckboxInput()
# )

# 多选checkbox,值为列表
# user = fields.MultipleChoiceField(
#     initial=[2, ],
#     choices=((1, '上海'), (2, '北京'),),
#     widget=widgets.CheckboxSelectMultiple
# )
View Code  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: