最新消息:运维之路

Django Forms – 笔记

脚本编程 admin 45浏览 0评论


(注:个人学习总结,仅供参考)
表单中最重要的事情是校验传入的数据
####Form表单的功能

1.自动生成HTML表单元素
2.检查表单数据的合法性

Form表单常见的几个input类型
checkbox 定义复选框。
file 定义输入字段和 “浏览”按钮,供文件上传。
hidden 定义隐藏的输入字段。
image 定义图像形式的提交按钮。
password 定义密码字段。该字段中的字符被掩码。
radio 定义单选按钮。
text 定义单行的输入字段,用户可在其中输入文本。默认宽度为 20 个字符。
textarea 大的文本输入框框
当然还有单选和多选 select option
一眼不合直接贴代码
Form.py

#--*-- coding:utf-8 --*--
from django import  forms
from .models import articles
Gender_CHOICES = ('Man', 'Famel')
FAVORITE_COLORS_CHOICES = (
    ('blue', 'Blues'),
    ('green', 'Green'),
    ('black', 'Black'),
)
vip_type = (
    (0, u'普通用户'),
    (1, u'高级用户'),)

class ArtForms(forms.Form):
    name = forms.CharField(label='作者',required=True, max_length=100,error_messages={'required': '用户名不能为空', 'invalid': '名字不符合规范'})
    title = forms.CharField(label='标题',required=True, max_length=100,error_messages={'required': '标题不能为空', 'invalid': '标题包含非法字符'})
    pwd   = forms.CharField(label='密码',widget=forms.PasswordInput,required=True,error_messages={'required': '密码不能为空', 'invalid': '密码安全强度不够'})
    email = forms.EmailField(label='Email',required=True, max_length=50,error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})
    content = forms.CharField(label='',widget=forms.Textarea,error_messages={'required': '内容不能为空', 'invalid': '内容包含非法字符'})
    img = forms.ImageField()
    favorite_colors = forms.MultipleChoiceField(required=False,
        widget=forms.CheckboxSelectMultiple, choices=articles.objects.all().values_list('id','author'))
    gender = forms.ChoiceField(
        choices=((1, '男'), (2, '女'),),  # 定义下拉框的选项,元祖第一个值为option的value值,后面为html里面的值
        initial=1,  # 默认选中第二个option
        widget=forms.RadioSelect  # 插件表现形式为单选按钮
    )
    vip = forms.CharField(widget=forms.widgets.Select(choices=articles.objects.all().values_list('id','author'), attrs={'class': 'form-control'}))

forms.as_p() forms.as_table()(默认传到模板是采用的这个方法)forms.as_ul
View.py

def add_page(request):
    if request.method == 'POST':
        form = ArtForms(request.POST)
        if form.is_valid():
            #print form
            at = form.cleaned_data['name']
            tt = form.cleaned_data['title']
            cc = form.cleaned_data['content']
            mail = form.cleaned_data['email']
            ars = articles.objects.create(author=at,title=tt,content=cc,email=mail)
            ars.save()
            return HttpResponseRedirect("/")
        else:
            er = form.errors
            return render(request,'error.html',{'errs':er})
            #return HttpResponse(form.errors.as_data())
    else:
        forms = ArtForms()
        return render(request,'add.html',{'form':forms.as_p()})

简单地说明
Django内置字段如下:

Field
required=True, 是否允许为空
widget=None, HTML插件
label=None, 用于生成Label标签或显示内容
initial=None, 初始值
help_text=”, 帮助信息(在标签旁边显示)
error_messages=None, 错误信息 {‘required’: ‘不能为空’, ‘invalid’: ‘格式错误’}
show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
validators=[], 自定义验证规则
localize=False, 是否支持本地化(根据不同语言地区访问用户显示不同语言)
disabled=False, 是否可以编辑
label_suffix=None Label内容后缀
Django Form 不带button的哦 按钮自己要写的
widget专题页面
https://docs.djangoproject.com/en/1.8/ref/forms/widgets/

转载请注明:DevOps » Django Forms – 笔记

与本文相关的文章

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址