: -변형합니다 파일 업로드는 잘못된 pstruct 내 오류 메시지를 무시합니다하지 않는 FieldStorage 예를
Invalid pstruct: {'upload': "b'' is not a FieldStorage instance"}
이가 아니다 내가 deform demo site에 도착하면 비어있는 상태로두면 더 합리적인 'Required'오류 메시지가 나타납니다.
문제가 해결되지 않는 아래와 같이 내 자신의 유효성 검사기를 사용 : -
def validate_file(node, value, **kwargs):
if not value:
raise colander.Invalid(node, "Please select a file")
class Schema(colander.MappingSchema):
excel_file = colander.SchemaNode(deform.FileData(),
widget=deform.widget.FileUploadWidget(tmpstore),
validator=validate_file)
내가 오류가 발생 것을 볼 수 있지만, 전자 오류 일치하지 않는 form.validate
에서 ValidationFailure
입니다 e.render()
의 출력을 그 자체. 관련 deform
소스 코드는 _FieldStorage
클래스가 cstruct
에 file
속성이 있는지 확인하고 자신의 Invalid
예외를 발생시키는 'widget.py'에 있습니다.
다음은 유효성 검사 호출을 수행하는 함수입니다 (렌더링 된 페이지를 반환 함).
def generate_upload_form(request):
form = deform.Form(upload_schema, buttons=('submit',))
if getattr(request, 'POST') and 'submit' in request.POST:
try:
value_dict = form.validate(request.POST.items())
except deform.ValidationFailure as e: # Invalid form
form = e.render()
else: # Successfully validated, now do operation
upload_form_operation(request, value_dict)
if isinstance(form, deform.Form):
form = form.render()
return form
어떻게이 deform
코드베이스를 원숭이 - 패치없이 내 자신의 오류 메시지가 표시되는 이유는 무엇입니까?
을 실패 문자열로 파일 이름을 제출 참조 : https://www.bountysource.com/issues/43000745-fileuploadwidget-raises-error-if-file -is-not-provided –