2015-05-08 88 views
0

我想對天氣的一些建議,我應該在WTForms中對CSV文件進行文件驗證。用戶故事是用戶將選擇要上傳的文件,選擇要執行的操作類型,然後提交。現在我們正在使用控制器中的幫助函數來驗證上傳的文件。一位同事建議我使用WTForms來執行文件驗證。 CSV文件將根據用戶選擇的操作類型具有不同的驗證要求。所以我的問題是,WTForms是這種類型驗證的好工具嗎?如果是的話,你會對方法有任何建議。目前我被阻止如何將用戶選擇的內容傳遞給文件驗證器。WTForms文件驗證限制

這裏是我當前的實現:

# Controller 
op_type = params['op_type'] 
file_info = params['input_file'] 
errors = ValidateFile(file_info, op_type) 
if errors: 
    # do something 

回答

1

我不知道WTForms到現在爲止,我的文檔檢查crash course,我不得不說這看起來很整齊,而且我認爲這是實現你想要的非常簡單。爲什麼不試一試呢?

的wtforms.fields.FileField,你需要在你的情況下,使用基本例如:

class UploadForm(Form): 
    image  = FileField(u'Image File', [validators.regexp(u'^[^/\\]\.jpg$')]) 
    description = TextAreaField(u'Image Description') 

    def validate_image(form, field): 
     if field.data: 
      field.data = re.sub(r'[^a-z0-9_.-]', '_', field.data) 

def upload(request): 
    form = UploadForm(request.POST) 
    if form.image.data: 
     image_data = request.FILES[form.image.name].read() 
     open(os.path.join(UPLOAD_PATH, form.image.data), 'w').write(image_data) 

發現here

編輯:

如果你想要做取決於你的單選按鈕,輸入驗證,唯一合理的解決辦法是從驗證函數內訪問您的單選按鈕的變量後。不知道的語法,但嘗試這樣的事情:

def validate_file(form, field): 
     if field.data: 
      radio_x = form.radio_x.data 
      if radio_x == 'on': 
       # your validation 
       if error: 
        raise ValidationError('Your input is invalid!') 

隨時提高我的答案。

+0

所以我的問題是驗證取決於用戶選擇哪個單選按鈕。不知道如何爲此設置表單。 – Dan

+0

@Dan如果我的問題正確,那麼我認爲這不是關於表單的設置,而是關於如何在python中實現驗證。我編輯了我的答案。 – Flaudre