发布于 2015-09-13 08:05:56 | 393 次阅读 | 评论: 0 | 来源: PHPERZ
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']}