웹 2py
web2py![]() web2py 로고 | |
원저작자 | 마시모 디 피에로 |
---|---|
초기 릴리즈 | 2007년 9월 27일, | 전(
안정된 릴리스 | 2.21.1[1] / 2020년 11월 27일; 전 ( ) |
저장소 | Web2py 저장소 |
기입처 | 파이썬 |
플랫폼 | 크로스 플랫폼 |
유형 | 웹 응용 프로그램 프레임워크 |
면허증. | GNU Lesser General Public License 버전 3(LGPLv3) |
웹 사이트 | www.web2py.com |
Web2py는 Python 프로그래밍 언어로 작성된 오픈 소스 웹 애플리케이션 프레임워크입니다.Web2py는 웹 개발자가 Python을 사용하여 동적 웹 콘텐츠를 프로그래밍할 수 있도록 합니다.Web2py는 웹 양식 개발 등 번거로운 웹 개발 태스크를 처음부터 줄이는 데 도움이 되도록 설계되어 있습니다.단,[2] 웹 개발자는 필요에 따라 양식을 처음부터 작성할 수 있습니다.
Web2py는 원래 사용 편의성과 도입에 중점을 두고 교육 도구로 설계되었습니다.따라서 프로젝트 수준 구성 파일이 없습니다.web2py의 디자인은 Ruby on Rails와 Django 프레임워크에서 영감을 받았습니다.이러한 프레임워크와 마찬가지로 web2py는 신속한 개발에 초점을 맞추고 구성 접근 방식보다 관례를 선호하며 모델 뷰 컨트롤러(MVC) 아키텍처 패턴을 따릅니다.
개요
Web2py는 다음과 같은 모든 주요 기능을 위한 내장 컴포넌트가 있다는 점에서 풀 스택 프레임워크입니다.
- HTTP 요구, HTTP 응답, 쿠키, 세션
- 다중 프로토콜[3] HTML/XML, REST, ATOM 및 RSS, RTF 및 CSV, JSON, JSON-RPC 및 XML-RPC, AMF-RPC(플래시/플렉스), [4]SOAP
- CRUD API
- 다중 인증 메커니즘 및 역할 기반 액세스 제어
- SQL을 동적으로 생성하고 호환되는 여러 데이터베이스 백엔드에서 실행되는 DAL(데이터베이스 추상층)
- 확장성을 위한 RAM, 디스크 및 memcached 기반 캐싱
- 국제화 지원
- jAjax 및 UI 효과를 위한 쿼리
- 컨텍스트에서의 에러 자동 로깅.
Web2py는 다음과 같은 건전한 소프트웨어 엔지니어링 관행을 장려합니다.
Web2py는 WSGI 프로토콜, 즉 웹 서버와 웹 애플리케이션 간의 통신을 위한 Python 지향 프로토콜을 사용합니다.또한 CGI 및 Fast CGI 프로토콜용 핸들러를 제공하며 멀티 스레드 SSL 지원[6] Rocket wsgiserver를 포함합니다.
독특한 기능
웹 기반 통합 개발 환경(IDE)
개발, 디버깅, 테스트, 유지보수 및 리모트 데이터베이스 관리는 모두 서드파티제의 툴 없이(옵션), Web 인터페이스를 통해 Web2py 어플리케이션 자체를 통해 실행할 수 있습니다.이 IDE에서는 국제화(언어 추가 및 번역 쓰기)도 실행할 수 있습니다.각 어플리케이션에는 Django와 마찬가지로 자동으로 생성된 데이터베이스 관리 인터페이스가 있습니다.Web IDE 에는, Web 베이스의 테스트도 포함됩니다.
애플리케이션은 명령줄에서 작성하거나 다른 [7]IDE와 함께 개발할 수도 있습니다.기타 디버깅 옵션:[8]
- Wing IDE를 사용하면 웹 브라우저에서 web2py 응용[9] 프로그램을 조작할 때 그래픽 디버깅할 수 있습니다.변수 검사 및 수정, 함수 호출 등을 할 수 있습니다.
- Eclipse/PyDev — Aptana PyDev 플러그인이 있는 Eclipse는 [10][11]web2py도 지원합니다.
- 확장 가능한 pdb 디버거는 Python의 표준 라이브러리의 모듈입니다.
- 플랫폼에 의존하지 않는 오픈 소스 Winpdb 디버거를 사용하면 암호화된 [13]연결을 통해 TCP/IP를 통해 원격[12] 디버깅을 수행할 수 있습니다.
가장 단순한 형태로 web2py를 사용하는 Hello World 프로그램은 다음과 같습니다(템플릿 없이 간단한 웹 페이지[14]).
방어하다 안녕(): 돌아가다 'Hello World'
Web2py에는 들여쓰기 요구사항이 없는 순수 Python 기반 템플릿 언어와 서버 측 DOM(Document Object Model)이 포함되어 있습니다.템플릿 시스템은 web2py [15]없이 동작합니다.Joomla 1.x 템플릿은 web2py [16]레이아웃으로 변환할 수 있습니다.
Web2py는 또한 두 개의 마크업 라이브러리를 포함합니다. Markdown2 text-to-HTML 필터는 Markdown에서 영감을 얻었지만 테이블, html5 비디오/오디오 및 embed 프로토콜을 지원하는 Markmin입니다.
뷰가 없는 컨트롤러는 컨트롤러가 반환하는 변수를 렌더링하는 범용 뷰를 자동으로 사용하여 HTML을 작성하기 전에 응용 프로그램의 비즈니스 로직을 개발할 수 있습니다.기본 템플릿을 사용하는 "Hello World" 예:
방어하다 안녕(): 돌아가다 받아쓰다(인사='Hello World')
페이지가 .html 확장자로 요구되면 HTML로, 페이지가 .json 확장자로 요구되면 JSON으로, .xml로 요구되면 XML로 자동으로 렌더링됩니다.jsonp, rss, ics, 구글 맵 등을 포함한 다른 프로토콜을 지원하며 확장 가능합니다.
다음으로 테이블을 정의하고 로그인한 사용자에게 그리드를 표시하는 보다 복잡한 코드 예를 나타냅니다.
db.define_table('물건',들판(이름,무효=진실의)) @auth.requires_displaces() 방어하다 안녕(): 돌아가다 받아쓰다(격자무늬 = SQL 폼.격자무늬(db.것))
티켓팅 시스템
각 web2py 어플리케이션에는 티켓팅 시스템이 포함되어 있습니다.
- 오류가 발생하면 해당 오류가 기록되고 사용자에게 티켓이 발급됩니다.이를 통해 오류 추적이 가능합니다.
- 오류 및 소스 코드는 날짜 또는 클라이언트 IP별로 오류를 검색하고 가져올 수 있는 관리자만 액세스할 수 있습니다.에러에 의해, 코드가 유저에게 노출되는 일은 없습니다.
휴대용 크론
Cron은 백그라운드에서 반복 작업을 만들고 실행하기 위한 메커니즘입니다.표준 crontab 형식의 응용 프로그램별 crontab 파일을 찾습니다.다음의 3가지 동작 모드를 사용할 수 있습니다.
- Soft cron: cron 루틴은 웹 페이지 내용이 서비스된 후에 확인되며 실행 정밀도를 보장하지 않습니다.권한이 없는 Apache CGI/WSGI 설치의 경우.
- 하드 크론: web2py 부팅 시 크론 스레드가 시작됩니다.Windows 및 Rocket/Standalone Web2py 설치의 경우.
- System cron: cron 함수는 명령줄(일반적으로 시스템 crontab)에서 강제 호출됩니다.Unix/Linux 시스템 및 web2py가 현재 실행되고 있지 않은 경우에도 cron 트리거를 실행해야 하는 장소의 경우.시스템 crontab에 액세스할 수 있는 경우 CGI/WSGI 설치에도 적합합니다.
스케줄러
버전 2.3 이후로는 web2py에는 마스터/워커 스케줄러가 포함되어 있기 때문에 cron 사용은 권장되지 않습니다.작업은 모델에 정의할 수 있으며 데이터베이스에 항목을 생성하여 예약할 수 있습니다.사용자는 백그라운드에서 태스크를 픽업하고 실행하는 작업 프로세스를 시작할 수 있습니다.스케줄은 더 많은 파라미터(시작시간, 정지시간, 반복횟수, 에러시의 시행횟수)를 지정할 수 있어 cron보다 우수하며 일정한 자원 사용률 내에서 보다 효율적으로 실행할 수 있습니다.
바이트 코드 배포
Web2py는 소스 코드 없이 바이트 코드 컴파일 형식으로 배포하기 위해 웹 애플리케이션을 컴파일할 수 있습니다.뷰에 특화된 템플릿 언어를 사용하는 프레임워크와 달리 Web2py는 뷰 코드를 바이트 코드로 컴파일할 수도 있습니다.이는 순수한 Python 코드이기 때문입니다.
글로벌 환경
Web2py는 Import가 아닌 모델 및 컨트롤러가 실행되기 때문에 Python 웹 프레임워크 세계에서 유일합니다.모듈이 아닙니다.각 HTTP 요청으로 초기화되는 단일 글로벌 환경에서 실행됩니다.이 디자인 결정에는 장단점이 있습니다.
주요 장점은 개발의 용이성, 특히 신속한 프로토타이핑입니다.또 다른 장점은 이 환경에서 정의된 모든 오브젝트는 HTTP 요구마다 깔끔하게 리셋되며 요구 간에 공유되지 않는다는 것입니다.즉, 개발자는 오브젝트 상태 변경(예를 들어 데이터베이스 필드의 판독 가능한 속성)에 대해 걱정할 필요가 없으며, 다른 동시 요청이나 다른 응용 프로그램에 대한 변경 내용이 유출될 염려도 없습니다.세 번째 장점은 web2py가 같은 모듈 또는 같은 이름의 다른 모듈을 사용하더라도 동일한 인스턴스 내의 여러 응용 프로그램이 충돌 없이 공존할 수 있다는 것입니다.
글로벌 환경의 주요 단점은 모델 파일과 컨트롤러 파일이 모듈이 아니며 실행 순서가 중요하다는 것입니다(단, 조건부 모델을 사용하여 지정할 수 있습니다).일반 Python 모듈보다 명명 충돌이 발생할 가능성이 높습니다.일부 표준 Python 개발 도구는 모델 및 컨트롤러에 정의된 개체를 이해하지 못할 수 있습니다.또한 개발자는 모델의 코드가 요청 시마다 실행되므로 성능 저하가 발생할 수 있다는 점을 알아야 합니다.web2py에서는 개발자가 일반 Python 모듈을 사용하거나 Import하는 것을 막을 수 없으며(모델이 필요 없는 접근법), 이를 위해 web2py는 스레드 로컬 객체(현재)를 제공하여 현재 요청과 관련된 객체에 쉽게 액세스할 수 있도록 합니다.단, 이 경우 개발자는 다른 프레임워크와 동일한 함정을 인지해야 합니다. 모듈 내에서 정의된 객체의 상태를 변경하면 다른 동시 요청에 영향을 미칠 수 있습니다.
또 다른 단점은 모델이나 컨트롤러가 클래스 베이스가 아니기 때문에 효율적인 코드 재사용이 더욱 어려워진다는 것입니다.특히 부모 컨트롤러(예를 들어 Ruby on Rails의 Application Controller)로부터 상속할 수 없다는 것은 모든 컨트롤러 파일에서 공통 컨트롤러 기능을 반복적으로 참조해야 한다는 것을 의미합니다.
지원되는 환경
운영체제, Python 버전 및 구현, 가상 머신, 하드웨어
web2py는 Windows, Windows CE 전화기, Mac, Unix/Linux, Google App Engine, Amazon EC2 및 Python 2.7/3.5/3.6/[17]py를 통한 거의 모든 웹 호스팅에서 실행됩니다.
web2py의 현재 바이너리 버전(Windows 또는 Mac용)은 Python 2.7을 포함하지만 소스 버전은 2.7과 3.5 이상에서 실행할 수 있습니다.Python 2.6에 대한 지원은 2017년에 중단되었습니다.
v1.64.0이 Jython 2.5에서 Java에서 수정 없이 실행되므로 알려진 [18]제한 없이 web2py를 사용할 수 있습니다.
web2py 코드는 위의 IronPython과 함께 실행할 수 있습니다.NET.[19] 제한 사항:
- CSV 모듈 없음(따라서 데이터베이스 I/O 없음)
- 서드파티 데이터베이스 드라이버 없음(SQLite도 아니므로 데이터베이스 없음)
- 내장 Web 서버는 없습니다(신호 삭제 및 로깅으로 기능을 정지하지 않는 한).
web2py 바이너리는[20] USB 드라이브 또는 Portable Python과 같은 종속성이 없는 휴대용 하드 드라이브에서 실행됩니다.
웹 서버
Web2py는 내장 Rocket [21]서버를 사용하여 HTTP 및 HTTPS를 통해 요청을 처리할 수 있으며 Apache,[22] Lighttpd,[23] Cherokey,[24] Hiawatha, Nginx 및 CGI, WSGI, mod_proxy [25][26][27]및/또는 mod_python을 통해 거의 모든 웹 서버를 사용할 수 있습니다.
IDE 및 디버거
많은 web2py 개발자들이 Vim과 같은 텍스트 에디터를 사용하지만 Emacs 또는 TextMate Web2py도 웹 기반 IDE를 내장하고 있습니다.디버깅, 리팩터링 등을 제공하는 보다 전문적인 도구를 선호하는 기업도 있습니다.
- PyDev가 통합된 Aptana Studio
- PyDev로 이클립스
- 내장 디버거를 [28]사용하는 에릭.
- 윙 IDE[29]
- Microsoft Visual Studio 및 Python Tools for Visual Studio
- Pycharm3는 Web2py 프레임워크 지원
데이터베이스 처리
web2py의 Database Abstraction Layer(DAL; 데이터베이스 추상화 레이어)는 SQL 쿼리를 동적으로 투과적으로 생성하며 데이터베이스 고유의 SQL 명령 없이 여러 호환 데이터베이스 백엔드 상에서 실행됩니다(단, SQL 명령어는 명시적으로 발행 가능).
SQLite는 Python에 포함되어 있으며 기본 web2py 데이터베이스입니다.연결 문자열을 변경하면 Firebird, IBM Db2, Informix, Ingres, Microsoft SQL Server, MySQL, Oracle, Postgre에 연결할 수 있습니다.SQL 및 Google App Engine(GAE)에 몇 가지 경고가 있습니다.스페셜리티:
DAL은 적어도 SQL Chemy 및 [32]Storm에 필적할 정도로 빠릅니다.
Web2py는 ORM이 아닌 DAL을 구현합니다.ORM은 데이터베이스 테이블을 데이터베이스 계층의 논리 추상화를 나타내는 클래스(사용자 클래스 또는 PurchaseOrder 클래스 등)에 매핑하고 레코드를 이러한 클래스의 인스턴스에 매핑합니다.대신 DAL은 데이터베이스 테이블과 레코드를 상위 수준의 추상화 대신 집합과 레코드를 나타내는 클래스의 인스턴스에 매핑합니다.이것은 ORM과 매우 유사한 구문을 가지고 있지만 더 빠르고 거의 모든 SQL 식을 DAL 식에 매핑할 수 있습니다.DAL은 web2py의 [33]나머지 부분과는 독립적으로 사용할 수 있습니다.
DAL 구문의 예를 다음에 나타냅니다.
db = 달.('postgresql://user:pass@localhost/db', 풀_사이즈=10) db.define_table('사람',들판(이름),들판('이미지,'실패')) db.사람인.삽입하다(이름.='마틴', 이미지=열다.('png.png')) 행 = db((db.사람인.이름.=='마틴') db.사람인.이름..포함하다('T')).선택한다.(오더바이=db.사람인.이름..더 낮게())
최신 버전의 DAL은 Spacialite와 PostGIS를 통해 2D GIS 기능을 지원합니다.현재 API는 3D API로의 이행이 가능하기 때문에 실험적인 것입니다.
데이터베이스 자동 이행
web2py는 데이터베이스 이행을 지원합니다.테이블의 정의를 변경하고 그에 따라 web2py ALTER가 테이블을 조정합니다.마이그레이션은 자동으로 수행되지만 모든 테이블에 대해 비활성화할 수 있으며 일반적으로 애플리케이션이 라이브 배포될 준비가 되면 마이그레이션이 비활성화됩니다.마이그레이션 및 마이그레이션 시도가 기록되고 변경 내용이 기록됩니다.
제한 사항:
- SQLite는 테이블을 변경하거나 열 유형을 변경할 수 없으며 새 유형에 따라 새 값을 저장합니다.
- GAE에는 대체 테이블의 개념이 없기 때문에 이행은 제한되어 있습니다.
라이선스
Web2py 코드는 Web2py 버전 1.91.[34]1에서 GNU Lesser General Public License(LGPL) 버전3으로 출시됩니다.
버전 1.91.1 이전의 Web2py 코드는 상업적 예외를 제외하고 GNU GPL v2.0으로 출시되었습니다.
web2py와 함께 배포되는 다양한 서드파티 패키지에는 자체 라이센스(일반적으로 퍼블릭 도메인, MIT 또는 BSD 유형 라이센스)가 있습니다.web2py로 빌드된 애플리케이션은 LGPL 라이선스의 대상이 되지 않습니다.
Web2py는 마시모 디피로에 의해 저작권이 있습니다.Web2py 상표는 마시모 디피로 소유입니다.
어워드
2011년 InfoWorld는 상위 6개의 Python 웹 프레임워크 중 web2py가 가장 높은 순위를 차지했으며, 2011년 최고의 오픈 소스 애플리케이션 개발 소프트웨어로 bossie award 2011을 수상했습니다.2012년에는 web2py가 InfoWorld Technology of the Year [35][36]상을 수상했습니다.
출판물
web2py 북
기본 web2py 문서는 Massimo DiPierro의 The Official web2py Book입니다.이 설명서는 완전한 web2py 어플리케이션으로 온라인,[37] PDF 형식 또는 인쇄 형태로 무료로 이용할 수 있습니다.
- 초판: 절판.Wiley; 2008년 9월 16일; 256페이지; ISBN978-0-470-43232-7.
- 제2판: web2py 매뉴얼.Wiley; 2009년8월 26일; 341페이지; ISBN 978-0-470-59235-9.
- 제3판 : Lulu; 2010년9월 25일 357페이지.
- 제4판 : Lulu, 2011년 12월9일 583페이지.
- 제5판 : PDF 복사, 2013년 3월 3일 614페이지, ISBN 978-0-578-12021-8.
- 최신 온라인 소스: GitHub에서[38]
온라인 문서
온라인 문서는 web2py 홈페이지에서 요리책, 비디오, 인터랙티브 예시, 인터랙티브 API 레퍼런스, epydoc s(전체 라이브러리 레퍼런스), FAQ, 치트 시트, 온라인 도구 등과 링크되어 있습니다.
- web2py용 치트 시트.
- web2py, web2py의 movuca 소셜 네트워크를 사용하여 게시된 레시피.
- Web2py의 크래시 코스(5부 시리즈).
- Web2py 슬라이드(구)
비디오
- web2py Enterprise Web Framework 튜토리얼을 참조하십시오.
- web2py "Shootout" 비디오 튜토리얼을 참조하십시오.
- web2py를 클릭합니다.
- web2py: 기본 웹 앱을 작성, 편집 및 배포합니다.
인쇄물
- "web2py 어플리케이션 개발 요리책", Packt, 2012
- web2py, Python Magazine, Marco Tabini & Associates, Inc.를 사용한 웹 프로그래밍2008년 6월
배경
개발자
web2py의 주요 개발자는 시카고에 있는 DePaul University의 컴퓨터 과학 부교수인 Massimo DiPierro입니다.2011년 현재 web2py 홈페이지에는 70개 이상의 "주요 기여자"[39]가 나열되어 있습니다.
개발 소스코드
web2py 개발 소스 코드는 주 저장소에서 사용할 수 있습니다.
web2py에 포함된 서드파티 소프트웨어
- Python 기반 구성 요소:
- Rocket, 고속 HTTP/1.1 준거, 멀티 스레드, SSL 지원, 스트리밍 지원 WSGI 서버
- fcgi.py: Fast CGI/WSGI 게이트웨이
- Janrain, Dropbox, Google, LDAP, PAM, X509, CAS, OpenID, OAuth 1&2, Loginza용 로그인 API
- simplejson: 단순하고 빠르고 완전하며 정확하고 확장 가능한 JSON 인코더 및 디코더.
- Markdown2: Markdown 프로세서;
- PDF 생성용 fpdf 라이브러리
- PyRTF: RTF 문서 생성기;
- 구문 형광펜
- SOAP 서비스용 pysimplesoap
- PyRSS2Gen: RSS 제너레이터;
- feedparser: RSS 및 ATOM 피드를 해석합니다.
- JavaScript 기반 구성 요소:
- jQuery: 경량 JavaScript 라이브러리;
- CodeMirror: 소스 코드용 무료 편집기
- C 기반 컴포넌트:
이력 및 명명
첫 번째 공개 버전의 web2py 소스 코드는 엔터프라이즈 웹 프레임워크(EWF)로서 Massimo DiPierro에 의해 2007-09-27에 GNU GPL v2.0으로 공개되었습니다.이름의 경합으로 인해 이름이 두 번 변경되었습니다.EWF v1.7은 Gluon v1.0에 이어 Gluon v1.15는 web2py v1.16에 이어졌습니다.라이선스는 2010-12-21에 web2py 버전 1.91.1에서 LGPLv3로 변경되었습니다.
Web2py 기반의 어플리케이션
- Movuca CMS 및 소셜 네트워크 엔진.
- 인스턴트 프레스 블로그 플랫폼.
- 아워웨이 소셜 네트워킹 사이트.
- Noob Music A 록 음악 사이트.
- Link Findr 네트워크 진단 도구.
- 노래방 스타일의 소셜 음악 앱을 개발하는 스타 메이커.
메모들
- ^ "Release 2.21.1". 27 November 2020. Retrieved 12 July 2021.
- ^ Web2py(2013), Web2py란?, web2py.com, 2013년 10월 11일 취득, <http://www.web2py.com/init/default/what>
- ^ Web2py는 v1.63 이후 여러 프로토콜을 지원합니다.
- ^ web2py에서의 SOAP 사용
- ^ 스마트 웹 기반 양식 작성
- ^ 로켓 웹 서버
- ^ Web2py 온라인 IDE와 It's All Text!Firefox 애드온 및 Ullipad(오픈 소스 Python IDE)
- ^ Web2py 어플리케이션 디버깅 방법
- ^ Wing IDE는 web2py 디버깅을 지원합니다.
- ^ Eclipse/PyDev는 web2py 디버깅을 지원합니다.
- ^ Eclipse에서 web2py 사용
- ^ Winpdb를 사용하면 TCP/IP를 통한 리모트 디버깅이 가능
- ^ Winpdb에서의 암호화된 통신
- ^ web2py가 있는 가장 간단한 웹 페이지: "Hello World" 예
- ^ web2py 없이 web2py 템플릿을 사용하는 방법
- ^ Web2py에서 Joomla 템플릿 사용
- ^ http://web2py.com/init/default/what
- ^ Web2py는 Jython을 사용하여 Java 및 J2EE에서 완전히 실행
- ^ Web2py는 위에서 IronPython과 함께 실행됩니다.NET(제한 있음)
- ^ USB 썸 드라이브에 web2py Windows 바이너리를 탑재한 MySQL
- ^ 기본 제공 SSL 서버 실행 방법
- ^ Apache 및 mod_ssl을 사용한 Web2py
- ^ Web2py (Lighttpd 및 Fast CGI 지원)
- ^ Web2py (체로키 포함)
- ^ Apache 모듈 mod_proxy
- ^ mod_proxy를 사용한 Web2py
- ^ mod_proxy 및 mod_proxy_html을 사용하는 Web2py
- ^ Eric IDE 프로젝트
- ^ web2py에서 Wing IDE 사용
- ^ Postgre와의 분산 트랜잭션SQL
- ^ Postgre와의 분산 트랜잭션SQL - 상세
- ^ ORM 벤치마크
- ^ web2py 없이 web2py DAL을 사용하는 방법
- ^ web2py 라이선스 계약
- ^ Grehan, Rick. "Pillars of Python: Six Python Web frameworks compared". InfoWorld. Retrieved 2017-11-30.
- ^ staff, InfoWorld Reviews. "InfoWorld's 2012 Technology of the Year Award winners". InfoWorld. Retrieved 2017-11-30.
- ^ "web2py - The official manual online". web2py.com. Retrieved 2018-11-14.
- ^ "web2py/web2py-book". GitHub. Retrieved 2018-11-14.
- ^ web2py의 주요 요인 목록