0
我正在驗證我的web應用,這是使用的TurboGears 2.3.3後失蹤,formencode 1.3數據使用@Validate與架構
我想驗證一個動態的形式,用戶通過表單創建創作過程。 我使用json將表單字段從客戶端發送到服務器以幫助組織事情。
這裏是我要送的數據:
var dataToSend = JSON.stringify({
'num_of_copies': num_of_copies.val(),
'amountAnswers' : amountAnswers,
'yesNoAnswers' : yesNoAnswers,
'selectAnswers' : selectAnswers,
'comments':comments.val()
})
$.ajax({
type: 'POST',
url: siteProxy+'orders/saveOrderItem',
data: {'data':dataToSend},
dataType: "json",
success: function (data, textStatus) {
if (textStatus == "success") {
if (data.errors){
console.log(data.errors)
}
}
},
error: function (data, textStatus) {
alert('error');
}
})
在我要驗證的數據,然後將服務器做一些東西
@expose('json')
@validate(validators=orderItemSchema(),error_handler=simpleErrorHandler)
def saveOrderItem(self,**kw):
answers = json.loads(kw['data'])
...... do stuff ...
沒有驗證,我的代碼工作。
這裏是我的驗證模式:
class orderItemSchema(Schema):
def _convert_to_python(self, value_dict, state):
value_dict = json.loads(value_dict['data'])
super(orderItemSchema,self)._convert_to_python(value_dict, state)
num_of_copies = validators.Number(min=1)
comments = validators.UnicodeString()
amountAnswers = ForEach(AmountAnswerValidator())
yesNoAnswers = ForEach(YesNoAnswerValidator())
selectAnswers = ForEach(SelectAnswerValidator())
驗證效果很好。
我的問題是這樣的:驗證後,KW變成沒有,我不能做的東西在
def saveOrderItem(self,**kw):
我認爲,問題就出在這部分代碼的地方:
class orderItemSchema(Schema):
def _convert_to_python(self, value_dict, state):
value_dict = json.loads(value_dict['data'])
super(orderItemSchema,self)._convert_to_python(value_dict, state)
感謝您的幫助
謝謝, 添加返回值的效果很好。 我也從2.3.3更新了tg版本到2.3.4,但我無法獲得@decode_params來解碼傳入值 – 2014-11-27 09:57:12