发布于 2015-09-13 08:05:56 | 378 次阅读 | 评论: 0 | 来源: PHPERZ

表单验证(Form Validation)

Django拥有一套出色的内置表单验证机制,Piston对此善加利用。

我们可以对某个方法使用@validate装饰器,该装饰器接收两个参数。 第一个参数是必须的,即用于验证的表单,第二个参数是可选的,即提交数据的动作。 对于 create ,默认的动作是 ‘POST’ ,对于 update ,动作就是 ‘PUT’ 。

举个例子(使用ModelForm):

#!python

from django import forms
from piston.utils import validate
from mysite.myapp.models import Blogpost

class BlogpostForm(forms.ModelForm):
    class Meta:
        model = Blogpost
    ...

@validate(BlogpostForm)
def create(request, ...):
    ...

使用一个普通form:

#!python

from django import forms
from piston.utils import validate

class DataForm(forms.Form):
    data = forms.CharField(max_length=128)
    is_private = forms.BooleanField(default=True, required=False)

...

@validate(DataForm, 'PUT')
def update(...):
    ...

若某个方法被@validate装饰,那么发送给该方法的数据如果没有通过表单本身的 is_clean 方法验证, Piston就会禹客户端返回错误,而不运行任何操作。如果通过了验证, 表单对象就会附加到请求(request)对象中。 然后我们可以通过 request.form 获取表单(可以进一步通过cleaned_data取得验证后的数据),如下例:

#!python

@validate(EchoForm, 'GET')
def read(self, request):
    return {'msg': request.form.cleaned_data['msg']}
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务