>  기사  >  백엔드 개발  >  일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의

일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의

Y2J
Y2J원래의
2017-05-04 14:20:051212검색

파이썬에는 프레임워크가 너무 많은데, 그걸 다 플레이할 수 있는 사람은 많지 않아요. 솔직히 말해서 저는 그 중 3개만 프로젝트 개발에 사용해봤고, 다른 사람들과도 약간의 접촉이 있어서 간략하게만 이야기하겠습니다. 여기에 오신 것을 환영합니다. 친구들이 추가했습니다

웹 프레임워크에 대해 말하면 Ruby 세계는 Rails가 지배하는 반면 Python은 수많은 마이크로 프레임워크와 프레임워크가 있는 세계입니다. 목록은 다음을 참조하세요.

wiki.python.org/moin/WebFrameworks

또 다른 주요 스크립트 언어인 PHP에도 많은 프레임워크가 있지만 Python보다 훨씬 덜 과장되어 있기 때문입니다. Python Web Framework(Python Web Development Framework)의 Python 프레임워크(이하 Python 프레임워크)가 너무 많기 때문에 Python 커뮤니티에서는 Python 프레임워크가 더 좋고 나쁘다는 주제가 항상 논의되고 있으며, 논의 범위는 다음과 같습니다. 길게는 3~5년.

Django

일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의Python 프레임워크가 번성하고 있다고 하지만 여전히 인기 있는 프레임워크가 있습니다. 가장 큰 것입니다. Python 프레임워크 중 Django가 최고라는 점에는 동의하는 사람도 있고 동의하지 않는 사람도 있습니다. 그러나 Django가 가장 완벽한 문서, 가장 높은 시장 점유율, 가장 많은 채용 기회를 갖고 있다는 점에 대해서는 모두가 동의하지 않을 것입니다. 반대. Django가 칭찬받는 주요 요소는 다음과 같습니다.

완벽한 문서. Django의 성공의 큰 부분은 Django의 거의 완벽한 공식 문서(Django 책 포함) 덕분이라고 생각합니다.

Rails와 마찬가지로 Django는 전체 솔루션 세트(풀 스택 프레임워크 + 배터리 포함)를 제공하며 기본적으로 필요한 모든 것을 사용할 수 있습니다(예:

캐시

, session, Feed, orm, geo, auth) 등은 모두 Django 자체에서 만들어집니다. Django는 기본적으로 웹사이트 개발에 필요한 모든 도구를 준비해두었기 때문에 개발 효율성은 말할 필요도 없습니다. 문제가 발생하면 코드가 아니라 Django의 소스 코드에서 쉽게 찾을 수 있습니다. 강력한 URL

라우팅

구성을 사용하면 Django에서는 기본적으로 보기 흉한 GET 매개변수와 작별할 수 있습니다. 셀프 서비스 관리 백엔드, 관리 인터페이스는 Django에서 눈길을 끄는 기능으로, 코드 한 줄을 작성하지 않고도 완전한 백엔드 관리 인터페이스를 가질 수 있습니다.

시스템이 긴밀하게 결합되어 있습니다. Django에 내장된 특정 기능이 그다지 좋지 않다고 생각되면 아래에 언급된 ORM 및 템플릿과 같이 선호하는 타사 라이브러리로 교체하기 어려울 것입니다. . Django에서는 SQLAlchemy나 Mako를 사용하는 것이 거의 불가능하며 일부 패치를 적용하더라도 매우 어색한 느낌을 줄 수 있습니다.

템플릿 함수는 상대적으로 약하고 Python 코드를 삽입할 수 없습니다. 더 복잡한 로직을 작성하려면 Python을 사용하여 태그 또는 필터를 구현해야 합니다. 템플릿에 대한 많은 논쟁이 있었습니다. 최근 참고할 수 있는 Python 템플릿에 대한 두 가지 흥미로운 기사가 ​​있습니다:

1 pydanny.blogspot.com/2010/12/stupid-template-언어s html (FQ 필요) )

2 techspot.zzzeek.org/2010/12/04/in-response-to-stupid-template-언어s/


URL 구성이 강력하기는 하지만 모두 직접 작성해야 합니다. . 이는 Rails의 구성에 대한 규칙과 완전히 일치하지 않습니다. 전문가와 Django를 처음 사용하는 사람들이 할당하는 URL은 매우 다릅니다.

데이터베이스 스키마가 설정되어 있으므로 문제가 발생합니다. 예를 들어 많은 웹사이트에서는

이메일

주소가 고유해야 하지만 스키마에서 이 필드의 값은 고유하지 않습니다. , 그래서 투쟁이 필요합니다. 일반적으로 Django는 많은 기능을 제공하며 일부 웹 애플리케이션을 빠르게 개발하는 데 사용하는 것이 매우 좋습니다. Django의 디자인 철학을 따르면 Django는 사용하기 쉽고, 사용할수록 더 쉬워질 것입니다. 반대로 Django의 디자인 철학을 통합하거나 수용할 수 없다면 사용하는 것은 분명 고통스러울 것입니다. Django이므로 최대한 빨리 포기하는 것이 상책입니다. 따라서 어떤 사람들의 눈에는 Django가 영약과 다르지 않지만 어떤 사람들에게는 독이 되고 독성이 매우 높습니다.

파일론

& TurboGears & repoze.bfg

일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의Django 외에 또 다른 큰 것은 Pylons입니다. 왜냐하면 TurboGears2.x는 Pylons를 기반으로 하고 있고 repoze.bfg도 Pylons 프로젝트에서 이 대규모 프로젝트에 통합되었기 때문입니다. 이에 대해서는 별도로 논의하지 않겠습니다. 나중에 TurboGears 및 repoze.bfg.

Pylons와 Django의 디자인 컨셉은 완전히 다릅니다. Pylons 자체에는 약 2000줄의 Python 코드만 있지만 Pylons에서 거의 사용하는 일부 타사 모듈도 함께 제공됩니다. Pylons는 하나의 쉘프와 옵션 솔루션만을 제공하며, 자신의 선호도에 따라 템플릿, ORM, 양식, 인증 등의 구성 요소를 자유롭게 선택할 수 있습니다. 우리는 종종 Python을 Glue 언어라고 말하므로 Pylons는 Glue 언어로 설계된 Glue 프레임워크라고 확실히 말할 수 있습니다.

Pylons를 선택하는 것은 아마도 자유를 선택하는 것과 같습니다.

악몽을 배우는 Pylons는 Pylons가 아닌 많은 타사 라이브러리에 의존합니다. 또한 이러한 라이브러리를 사용하는 방법을 배워야 합니다. 중요한 점은 때로는 배우고 싶은 것이 무엇인지 모른다는 것입니다. Pylons의 학습 곡선은 Django의 학습 곡선보다 훨씬 높으며, 이전에는 Pylons의 공식 문서가 비판의 대상이었습니다. 다행히도 나중에 The Definitive Guide to Pylons라는 책이 출판되었습니다. 이러한 이유로 Pylons는 한때 전문가에게만 적합한 Python 프레임워크로 알려졌습니다.

디버깅

악몽입니다. ​​관련된 모듈이 많고, 오류가 발생하면 문제를 찾기가 어렵습니다. 작성한 프로그램의 잘못일 수도 있고, Pylons가 잘못되었거나, SQLAlchemy가 잘못되었거나, formencode에 버그가 있을 수도 있고, 어쨌든 매우 지저분합니다. 이 문제는 잘 알고 있어야만 해결할 수 있습니다. Pylons와 repoze.bfg의 통합은 Django의 위상에 도전할 수 있는 다음 프레임워크를 탄생시킬 수 있습니다.

Tornado

& web.py

일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의Tornado는 웹 서버( 이 글에서는 이에 대해 자세히 다루지 않겠습니다.) 그리고 web.py와 비슷한 마이크로 프레임워크이기도 합니다. 프레임워크로서 Tornado의 아이디어는 주로 Web.py에서 따왔습니다. Web.py 웹사이트의 홈페이지 Bret Taylor는 다음과 같이 말했습니다(여기서 그가 FriendFeed에 대해 언급한 프레임워크는 Tornado와 동일한 것으로 간주될 수 있습니다).

“[web.py는] FriendFeed에서 사용하는 웹 프레임워크에 영감을 주었습니다. [그리고] App Engine과 함께 제공되는 웹앱 프레임워크…”

이러한 관계로 인해 Tornado는 나중에 별도로 논의되지 않습니다.

프레임워크 간소화의 장점은 프레임워크 자체에 대해 너무 걱정하거나 프레임워크의 간섭을 받지 않고 비즈니스 로직에 집중할 수 있다는 것입니다. 동시에 단점도 분명합니다. 스스로 많은 일을 해야 합니다.

저는 개인적으로 이런 간소화된 프레임워크를 선호합니다. 소스 코드를 읽으면 전체 프레임워크의 작동 메커니즘을 쉽게 이해할 수 있기 때문입니다. 프레임워크의 해당 부분이 그다지 만족스럽지 않으면 완전히 Monkey 패치를 적용할 수 있습니다. 내 요구 사항에 따라 오십시오.

Bottle

& Flask 차세대 Python 프레임워크의 대표로서 Flask는 다음을 사용한다는 점에서 매우 흥미롭습니다.

from bottle import route, run
 
@route('/:name')
def index(name='World'):
  return &#39;<b>Hello %s!</b>&#39; % name
 
run(host=&#39;localhost&#39;, port=8080)
와 같은 URL 라우팅을 구성하는 데코레이터 메서드 web.py와 같은 Bottle, Flask는 매우 간소화되었습니다. Bottle 및 모든 코드는 모두 2천 줄로 구성된 .py 파일에 있습니다. 또한 Flask는 Pylons와 마찬가지로 Jinja2, SQLAlchemy 등과 잘 결합될 수 있습니다.

그러나 아직 Bottle이나 Flask로 성공한 사례는 거의 없습니다.

일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의

키호테

특히 키호테에 대해 이야기하고 싶은 이유는 Python으로 개발된 국내 최대 규모의 웹사이트인 "Douban.com"이 Quixote를 사용하여 개발되었기 때문입니다. . 나는 단지 소스 코드를 간략하게 살펴보았으며 어떤 연구도 수행하지 않았으며 경험을 추가하지 않을 것입니다. 지금 Douban이 개발된다면 선택의 폭이 더 넓어질 거라 생각하고 있어요.

기타

(web2py, uliweb, Karrigell, Werkzeug...)

프레임워크 선택에 대한 마지막 오해

에서 프레임워크 선택에 있어서 많은 사람들은 자신도 모르게 다음과 같은 두 가지 오해에 빠지기 쉽습니다. 1. 어떤 프레임워크가 가장 좋은가요? 세상에 가장 좋은 프레임워크는 없고, 프레임워크에 가장 적합하고 적합한 프레임워크만 있을 뿐입니다. 당신의 팀을 위한 프레임워크입니다.

프로그래밍 언어

선택도 마찬가지입니다. 팀이 Python에 가장 익숙하다면 Python을 사용하세요. Ruby에 가장 익숙하다면 프로그래밍 언어와 프레임워크는 도구일 뿐입니다. 더 빨리 사용할 수 있고, 좋고 경제적이며, 작업을 마친 후 좋은 것입니다.

2. 성능에 너무 많은 관심을 기울이세요 - 사실 대부분의 사람들은 프레임워크의 성능에 대해 그다지 신경 쓸 필요가 없습니다. 왜냐하면 여러분이 개발하는 웹사이트는 단순히 프레임워크를 수행할 수 있는 웹사이트가 많지 않기 때문입니다. 10,000개의 IP를 지원하며 10,000개는 훨씬 더 드뭅니다. CPU와 메모리는 항상 유휴 상태이기 때문에 일정량의 방문 없이 성능에 대해 이야기하는 것은 별 의미가 없습니다. 더욱이, 언어와 프레임워크는 일반적으로 성능 병목 현상이 아닙니다. 성능 문제는 데이터베이스 액세스와 파일 읽기 및 쓰기에서 가장 흔히 발생합니다. PHP의 Zend Framework는 느리기로 악명이 높지만, Zend Framework에는 digg.com과 같은 대형 웹사이트도 있는데, 종종 성능 문제가 있다고 알려진 Ruby와 Rails에서는 여전히 twitter를 개발할 수 없나요? 게다가 현재 하드웨어 비용과 대역폭 비용은 매우 낮습니다. 특히 클라우드 컴퓨팅 플랫폼의 출현으로 인건비가 가장 비쌉니다. IP가 수만 개 없어도 걱정할 필요가 없습니다. 성능 문제에 대해서는 많은 정보를 제공합니다. 트래픽이 증가하면 돈을 들여 서버 공간도 좋고 성능 문제도 간단하고 빠르게 해결할 수 있습니다.

참고: 일부 네티즌들은 "Quora가 Pylons를 사용하여 개발되었습니다"라는 내 진술이 객관적이지 않다고 의문을 제기했습니다. 여기서 언급된 A 웹사이트는 B를 사용하여 개발되었으며 이는 A가 주로 또는 일부라는 의미일 뿐입니다. B가 개발했으므로 A가 C를 사용하는지 걱정하지 마세요.


【관련 추천】

1. Python 기본 입문 무료 튜토리얼

2. Python 학습 매뉴얼

3.

Python 객체지향 동영상 튜토리얼

위 내용은 일반적으로 사용되는 5가지 Python 웹 프레임워크에 대한 자세한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.