2010-07-07 21 views
36

양식 유효성 검사 라이브러리를 원합니다.파이썬 양식 유효성 검사 라이브러리 권장 사항

1. 양식 유효성 검사에서 분리 된 html 생성;

2. 유효성 검사 오류는 쉽게 직렬화 할 수 있습니다. json 객체로 덤프 됨

파이썬 웹 프로젝트에서 어떤 형식의 유효성 검사 라이브러리를 선택 하시겠습니까?

+9

이 질문은 2 년 전에 답변되었고 "유혹 토론, 논쟁, 여론 조사 또는 확장 토론"중 아무도 "가능성이"일어날 것이라고 말했다. 아마도 조금 과열 된가? –

답변

1

그것은 wheather에 따라 다르며 사용하는 프레임 워크의 유형입니다.

당신의 작업에 대해서는 사용하기 쉽고 여전히 강력한 "web2py-Framework"을 사용하는 것이 좋습니다. form-validation by default (web2py-book은 무료입니다.) 정확히 원하는대로 수행합니다. 유효성 검사에서 HTML 생성을 분리하여 자동으로 수행하지만 사용자가 원할 경우 사용자 정의 할 수 있습니다.

예 :

def display_form(): 
    form=FORM('Your name:', 
       INPUT(_name='name', requires=IS_NOT_EMPTY()), 
       INPUT(_type='submit')) 
    if form.accepts(request.vars, session): 
     response.flash = 'form accepted' 
    elif form.errors: 
     response.flash = 'form has errors' 
    else: 
     response.flash = 'please fill the form' 
    return dict(form=form) 

그것은 오류를 직렬화하는 것도 가능하지만 그 질문에 대한가 web2py-group에 그들에게하기 가장 좋습니다. 그들은 아주 좋고 당신을 아주 빨리 도울 것입니다.

희망이 있습니다. 감사합니다.

+0

@ Satoru.Logic 덕분에 -1 대답을 위해, 내 시간을 보내고 .. 어쨌든, "web2py 싫은 무엇을 의미합니까? – Joschua

+0

>. satoru

+0

왜'session' 변수를 사용해야할까요? 또한 대부분의 다른 것들은 db.py에 설정되어 있지만 제거 할 수 있습니다 (예 : db, auth, crud, 서비스, 메일. – Joschua

12

나는 아마 WTForms을 선택할 것입니다.

0

당신이 사용하는 기본 프레임 워크에 따라 다릅니다. 폼 프레임 워크에 내장 장고에 대한

, 최고,

케이는 잡지의 형태로 시스템

및 tipfy의 확장 버전을 사용하면서 WTForms를 사용합니다.

django에 내장 된 시스템이 지금까지 최고입니다.

어떤 프레임 워크를 사용합니까?

+1

감사합니다. 나는 현재 Django의 폼 프레임 워크를 사용하고있다. 내가 시도 할 수있는 다른 형식 라이브러리가 있는지 궁금합니다. – satoru

+1

당신이 특정 필요가 있다면, 나는 프레임 워크에 내장 된 것을 확장하는 것이 좋습니다, 나는 많은 노력을했지만 아무것도 장고를 이겼습니다. – iamgopal

41

면책 조항

은 일반적으로 지금 HTML 양식 라이브러리에 대해 조금 조심 해요 말하기. 메가 프레임 워크에서 무언가를 사용한다면, 메가 프레임 워크 전체를 종속물로 가져와야합니다.

많은 메가 프레임 워크의 많은 하위 구성 요소는 프레임 워크에 의존하지 않지만 스스로를 괴롭히지 않겠다고 주장합니다. 만약 당신이 하나를 사용하지 않는다면, 거기에는 적어도 다스 형태의 라이브러리가 있습니다. 거기에는 다양한 기능 차이가 있습니다. 선택만으로는 혼란 스러울 수 있습니다. 일반적으로 이안 비킹 (Yan Bicking) says은 수년 전만해도 여전히 사실입니다. 모든 사람들에게 어울리는 한 가지 형식 라이브러리의 개념은 상당히 우스꽝스러운 것 같습니다. 사실 나는 당신이 정말로 필요하다고 결정하기 전에 두 번 생각할 필요가 있다고 주장 할 것입니다. 대부분 FormEncode과 같은 양식 유효성 검사 라이브러리 만 필요할 때가 많습니다. 그것은 당신이 그것을 어떻게 사용 하느냐에 달려 있습니다.

나를 위해 mega-framework을 사용하지 않기 때문에 가벼운 무게, 선택하기 쉽고 구성하기 쉬운, 그리고 HTML의 정상적인 사용 방법으로는 얻지 못하는 것을 선택하겠다./JS/CSS.

내가 ToscaWidgets, ToscaWidgets 2, Formish, Deform, WTForms 및 FormEncode을 시도했습니다

END 면책 조항. 나는 그들 중 어느 누구도 완벽에 가깝지 않다고 말해야한다. 내 경험은 다음과 같습니다.

  • ToscaWidgets, ToscaWidgets 2 - 매우 강력하지만 매우 복잡합니다. ToscaWidgets 2는 훨씬 좋지만 여전히 알파 ATM입니다. 설정에 꽤 많은 수의 닌자 기술이 필요하며 기본 템플릿을 사용자 정의해야 할 때마다 코드가 상당히 빠르게 팽창하는 경향이 있습니다.
  • Formish/Deform - TW만큼 강력하지만 Formish는 현재 휴면 상태입니다. 그것은 또한 Mako와 아주 밀접하게 묶여 있습니다. 그래서 Mako를 사용하지 않는다면, 아마 당신을위한 것이 아닙니다. 변형은 Formish의 재 작성이지만 많은 Zope 종속성을 가져옵니다. Chameleon은 ZPT 이외의 다른 템플릿 언어를 지원하는 측면에서도 아직 그다지 중요하지 않습니다. 이 두 라이브러리는 설치가 특히 쉬운 것은 아닙니다.
  • WTForm - 아주 간단합니다. 방해가되지 않으며 개발면에서 매우 적극적입니다. 위의 라이브러리만큼 강력하지는 않지만 일반적으로 발생할 수있는 80 %의 사용 사례를 처리하므로 충분히 좋습니다.
  • FormEncode - 2005 년부터 시도해 보았습니다. 잘 테스트 된이 문서에는 사전 빌드 된 유효성 검사기가 가장 많으며 조건부 유효성 검사를 지원하며 수십개의 언어로 유용한 오류 메시지가 지원됩니다. 또한 값과 오류 메시지가 미리 채워진 HTML에서 양식 코드를 생성하는 매우 간단하지만 집중적 인 기능이 있습니다. 단점으로는 때때로 비 직관적 인 API와 절대적으로 스파게티 같은 내부 코드가 있습니다. 그러나이 라이브러리는 매우 신뢰할 만하고 모든 데이터 유효성 검사 사례에 매우 적합하며 항상 다시 돌아옵니다.

2012 년 말, Python 검증 라이브러리에 대한 빠른 Google 및 PyPI 검색을 통해 수백 개의 패키지가 제공됩니다. 개발중인 Django 확장을 할인 한 12 개 이상의 주목할만한 것들이 있습니다. JSON-Schema을 사용하여 스키마를 정의하고 파이썬 데이터 구조를 일반적으로 검증 할 수있는 경향이있는 것으로 보입니다. 이것은 서버 응용 프로그램 개발자가 여러 채널 (RESTful API 및 HTML 양식)에서 사용자 데이터를 받아들이는 것을 반영하지만 하나의 유효성 검사 라이브러리 만 사용하려는 경우가있을 수 있습니다.

파이썬 3.3의 출시로 인해 파이썬 3.x를 지원하기 위해 기존 라이브러리를 이식하는쪽으로의 움직임이 촉발되었을 것입니다. (플립 측은 오래된 라이브러리가 정체되어 있고 파이썬 2.x와 만 호환됩니다.) Python 3.x를 지원하기 위해 이미 지원하거나 적극적으로 노력하고있는 것을 선택하는 것이 현명 할 수도 있습니다.

마지막으로 양식 유효성 검사 라이브러리를 선택할 때 또 다른 큰 문제는 유용한 오류 메시지를보고하는 기능입니다. 오류 메시지는 장기적으로 오류 메시지의 현지화에 대한 필요성을 항상 포함합니다. 자체 오류 메시지를 쉽게 제공하므로 나머지 웹 응용 프로그램 아키텍처와 라이브러리를 통합하는 복잡성이 신속하게 결정됩니다.

유망 -와 - 올 사람 :

  • Voluptuous
  • Kanone (FormEncode에서 영감) (매우 인기있는 매우 간단한 API)
  • Schema (docopt의 같은 저자, 아주 간단한 API)
+0

[Colander] (http://colander.readthedocs.org/en/latest/)이 FYI를 위해 일해 왔습니다. – KurtB

4

이 항목은 이전 버전과 조금 다르지만 필자가이 목적을 위해 작성한 라이브러리를 부끄러움없이 연결한다고 생각했습니다. . HTML 양식에만 독점적 인 것은 아니지만 최소한 부분적으로 염두에두고 작성되었습니다.

"Validator"는 이름을 지었을 때 매우 창의적인 느낌이 들지 않았습니다. 여기에 당신이 간다 : https://github.com/wilhelm-murdoch/Validator