code

Django와 다른 Python 웹 프레임 워크?

codestyles 2020. 12. 4. 08:15
반응형

Django와 다른 Python 웹 프레임 워크?


나는 존재하는 모든 파이썬 웹 프레임 워크를 거의 시도해 보았고, 은색 총알 프레임 워크가 없다는 것을 깨닫는 데 오랜 시간이 걸렸습니다. 각각의 장단점이 있습니다. 저는 Snakelets로 시작하여 거의 모든 것을 소란스럽지 않고 낮은 수준에서 제어 할 수 있다는 것을 진심으로 즐겼지만 TurboGears를 발견 하고 그 이후로 (1.x) 사용하고 있습니다. Catwalk 및 웹 콘솔과 같은 도구는 나에게 매우 중요합니다.

그러나 WSGI 지원을 제공하는 TurboGears 2가 나오고 Django와 WSGI 캠프 사이의 종교적 논쟁을 읽은 후 저는 "올바른 방식으로 수행"하는 것 사이에서 정말 갈등을 겪습니다. 예를 들어 WSGI 학습, 기능 작성에 귀중한 시간 보내기 Django 또는 나를 위해 모든 것을 수행하는 일부 고급 프레임 워크를 사용하는 것과는 반대로 Django 및 기타 풀 스택 프레임 워크에 이미 존재합니다. 내가 볼 수있는 후자의 단점은 매우 분명합니다.

  1. 나는 그 과정에서 아무것도 배우지 않고있다
  2. 더 낮은 수준의 작업이 필요하다면 고통 스러울 것입니다.
  3. 인증을 사용하는 기본 사이트에만 필요한 오버 헤드는 미쳤습니다. (IMO)

그래서, 내 질문은 이것이 더 나은 선택인지 아니면 단지 의견의 문제일까요? 최소한의 소란으로 내가 원하는 것을 달성한다면 Django를 빨아 들여 사용해야합니까 (인증 및 CRUD 인터페이스를 원합니다) 내 데이터베이스)? 나는 Werkzeug, Glashammer 및 친구들을 시도했지만 AuthKit 및 Repoze는 기본 인증을 설정하는 데 필요한 단계 수뿐만 아니라 나를 두려워했습니다. Pylons를 살펴 보았지만 문서가 부족한 것 같고 인증이나 CRUD 인터페이스와 같은 간단한 기능을 참조 할 때 다양한 위키 페이지와 문서가 서로 모순되는 것처럼 보였고 버전 등에 대한 해킹이 다릅니다.


내가 충분히 명확하지 않다는 것을 지적한 S. Lott에게 감사합니다. 내 질문은 : 다음 중 장기적으로는 가치가 있지만 단기적으로는 고통스럽지 않은 것은 무엇입니까 (예 : 중간 수준, 누구?)-WSGI를 배우거나 "배터리 포함"프레임 워크를 고수합니까? 후자의 경우 Django를 다시 시도해야하는지, TurboGears 1.x를 고수해야하는지, 아니면 다른 프레임 워크에 참여해야하는지에 대한 제안을 주시면 감사하겠습니다.

또한 CherryPy를 사용해 보았지만 즉시 사용할 수있는 충분한 CRUD 애플리케이션을 찾지 못한 것 같습니다.


TG2를 다시 살펴볼 것을 제안합니다. 나는 사람들이 지난 버전 이후의 몇 가지 진보를 알아 차리지 못했다고 생각합니다. 증가하는 WSGI 유틸리티 스택 외에도 고려해야 할 몇 가지 TG2 관련 항목이 있습니다. 다음은 몇 가지 주요 사항입니다.

TurboGears 관리 시스템 -데이터베이스에 대한이 CRUD 인터페이스는 선언적 구성 클래스를 사용하여 완전히 사용자 정의 할 수 있습니다. 또한 Dojo와 통합되어 무한 스크롤 가능한 테이블을 제공합니다. 서버 측 유효성 검사도 자동화됩니다. 관리 인터페이스는 RESTful URL과 HTTP 동사를 사용하므로 산업 표준을 사용하여 프로그래밍 방식으로 쉽게 연결할 수 있습니다.

CrudRestController / RestController -TurboGears는 컨트롤러에서 서비스를 처리하는 구조화 된 방법을 제공합니다. 단순히 RestController를 확장하여 표준화 된 HTTP 동사를 사용할 수있는 기능을 제공합니다. Sprox 와 CrudRestController를 결합 하면 완전히 사용자 정의 할 수있는 자동 생성 양식을 사용하여 애플리케이션의 어느 곳에 나 crud를 넣을 수 있습니다. TurboGears는 이제 url의 파일 확장자로 mime 유형을 지원하므로 컨트롤러가 html을 렌더링하는 데 사용하는 것과 동일한 인터페이스로 .json 및 .xml을 렌더링하도록 할 수 있습니다 (컨트롤러에서 사전 반환).

링크를 클릭하면 과거의 문서보다 더 광범위한 스핑크스로 작성된 새로운 문서 세트가 있음을 알 수 있습니다.

최고의 웹 서버 , ORM템플릿 시스템 (자신의 선택)을 사용하면 사이트가 성장함에 따라 확장 성을 유지하면서 빠르게 진행하려는 사람들에게 TG가 적합한 이유를 쉽게 알 수 있습니다.

TurboGears는 종종 움직이는 목표물을 맞추려고하는 것으로 보이지만 릴리스에 대해 일관성이 있으므로 필요한 최신 기능을 얻기 위해 트렁크 밖에서 작업하는 것에 대해 걱정할 필요가 없습니다. 향후 출시 예정 : 응용 프로그램이 쉽게 붙여 넣을 수있는 명령으로 기능을 확장 할 수있는 더 많은 TurboGears 확장.


Django와 WSGI 캠프 사이의 종교적 논쟁

WSGI가 무엇인지 Django가 무엇인지에 대해 약간 혼란스러워하는 것처럼 보입니다. Django와 WSGI가 경쟁한다고 말하는 것은 C와 SQL이 경쟁하고 있다고 말하는 것과 비슷합니다. 사과와 오렌지를 비교하고 있습니다.

Django는 프레임 워크이고 WSGI는 서버가 프레임 워크와 상호 작용하는 방식에 대한 프로토콜 (Django에서 지원)입니다. 가장 중요한 것은 WSGI를 직접 사용하는 방법을 배우는 것은 어셈블리 학습과 비슷하다는 것입니다. 훌륭한 학습 경험이지만 프로덕션 코드에 대해 실제로 수행해야하는 작업은 아닙니다.

어쨌든 내 조언은 스스로 알아내는 것입니다. 대부분의 프레임 워크에는 "한 시간 안에 wiki / blog / poll 만들기"유형의 연습이 있습니다. 각각에 대해 약간의 시간을 보내고 가장 좋아하는 것을 찾으십시오. 결국, 시험해보고 싶지 않다면 다른 프레임 워크를 어떻게 결정할 수 있습니까?


Django 또는 유사한 풀 스택 프레임 워크를 사용하여 "아무것도 배우지 않는"것에 대해 너무 비관적이고 문서 및 대규모 커뮤니티의 가치를 과소 평가하고 있다고 말하고 싶습니다. Django를 사용하더라도 여전히 상당한 학습 곡선이 있습니다. 원하는 모든 것을 수행하지 못한다면 프레임 워크 코드가 뚫을 수없는 것과는 다릅니다.

약간의 개인적인 경험 : 저는 Twisted / Nevow, TurboGears 및 몇 가지 다른 Python 웹 프레임 워크를 만지작 거리며 여러 해를 보냈습니다. 프레임 워크 코드가 영구적으로 완료되지 않았고 내 아래에 다시 작성 되었기 때문에 아무것도 완료하지 못했습니다. 문서는 종종 존재하지 않거나 잘못되었으며 유일한 지원은 IRC를 통해 이루어졌습니다 (나는 종종 훌륭한 조언을 받았지만 내가 요청하면 당당한 것처럼 느꼈습니다. 많은 질문).

이에 비해 지난 몇 년 동안 저는 Django로 몇 개의 사이트를 망쳤습니다. 이전 경험과 달리 실제로 배포 및 실행 중입니다. Django 개발 프로세스는 느리고 조심 스러울 수 있지만 비 트로트와 지원 중단이 훨씬 적고 실제로 도움이되는 문서가 생성됩니다.

Django에 대한 HTTP 인증 지원 은 # 3에서 언급 한 내용이라면 몇 주 전에 마침내 시작되었습니다 .


귀하의 질문은 "WSGI를 배우고 모든 것을 스스로 수행 할 가치가 있는가"또는 "모든 것을 수행하는 풀 스택 프레임 워크"를 사용하는 것 같습니다.

나는 그것이 잘못된 이분법이고 명백한 세 번째 방법이 있다고 말하고 싶습니다. TurboGears 2는 "모든 것을 수행"스타일 프레임 워크에서 WSGI 미들웨어에 대한 이해에 이르기까지 원활한 경로를 제공하고 애플리케이션의 요구에 맞게 프레임 워크의 거의 모든 측면을 사용자 정의하는 기능을 제공합니다.

우리는 모든 수준에서 모든 곳에서 성공하지 못할 수도 있지만 특히 TurboGears 1 경험이 이미 있다면 TG2 학습 곡선이 처음에는 매우 쉽고 쉬울 것이라고 생각합니다. 당신은 그것을 필요로합니다.

특정 문제를 해결하려면 :

  • TG1에서 사용하던 것과 일치하는 인증 시스템을 즉시 제공합니다.
  • 우리는 인터페이스와 같은 멋진 스프레드 시트를 기본값으로 만들기 위해 dojo와 잘 작동하는 tgext.admin이라는 인터페이스와 같은 기본 "django admin"인터페이스를 제공합니다.

또한 거기에있는 몇 가지 다른 옵션에 대해 설명하고 혜택에 대해 조금 이야기하고 싶습니다.

  • CherryPy. 저는 CherryPy가 훌륭한 웹 서버이자 최소한의 웹 프레임 워크라고 생각합니다. 내부적으로는 WSGI를 기반으로하지 않지만 "전체 스택"경험을 제공하지는 않지만 좋은 WSGI 지원을 제공합니다. 그러나 빠른 속도가 필요하고 Django 또는 TurboGears에서 제공하는 기본값에 특히 적합하지 않은 사용자 지정 설정의 경우 훌륭한 솔루션입니다.

  • 장고. Django는 웹 사이트 개발을위한 매우 훌륭하고 깔끔한 통합 시스템이라고 생각합니다. 응용 프로그램과 작업 스타일이 표준 설정에 잘 맞으면 환상적 일 수 있습니다. 그러나 DB 사용을 조정하고, 템플릿 언어를 교체하거나, 다른 사용자 인증 모델을 사용하거나, 다른 방식으로 작업을 수행해야하는 경우 프레임 워크와 싸우고있을 가능성이 높습니다.

  • Pylons CherryPy와 같은 Pylons 는 훌륭한 최소한의 웹 프레임 워크입니다. CherryPy와 달리 WSGI는 전체 시스템을 통해 활성화되며 확장을 잘하는 데 도움이되는 SQLAlchemy 및 Mako와 같은 정상적인 기본값을 제공합니다. 새로운 공식 문서는 당신이 본 것처럼 보이는 이전 위키 문서보다 훨씬 더 나은 품질입니다.


CherryPy를 보셨나요? 최소한이지만 효율적이고 간단합니다. 방해가되지 않을 정도로 낮은 수준이지만 복잡성을 숨길만큼 충분히 높습니다. 잘 기억한다면 TurboGears가 그 위에 만들어졌습니다.

CherryPy를 사용하면 모든 것을 선택할 수 있습니다. (템플릿 프레임 워크, ORM (원하는 경우), 백엔드 등)


WSGI 배우기

WSGI는 터무니없이 간단합니다 .. 기본적으로 ..

def application(environ, start_response) pass

The function is called when an HTTP request is received. environ contains various data (like the request URI etc etc), start_response is a callable function, used to set headers.

The returned value is the body of the website.

def application(environ, start_response): start_response("200 OK", []) return "..."

That's all there is to it, really.. It's not a framework, but more a protocol for web-frameworks to use..

For creating sites, using WSGI is not the "right way" - using existing frameworks is.. but, if you are writing a Python web-framework then using WSGI is absolutely the right way..

Which framework you use (CherryPy, Django, TurboGears etc) is basically personal preference.. Play around in each, see which you like the most, then use it.. There is a StackOverflow question (with a great answer) about this, "Recommendation for straight-forward python frameworks"


Have you checked out web2py? After recently evaluating many Python web frameworks recently I've decided to adopt this one. Also check out Google App Engine if you haven't already.


I'd say the correct answer depends on what you actually want and need, as what will be worthwhile in the long run depends on what you'll need in the long run. If your goal is to get applications deployed ASAP then the 'simpler' route, ie. Django, is surely the way to go. The value of a well-tested and well-documented system that exactly what you want can't be underestimated.

On the other hand if you have time to learn a variety of new things which may apply in other domains and want to have the widest scope for customisation then something like Turbogears is superior. Turbogears gives you maximum flexibility but you will have to spend a lot of time reading external docs for things like Repoze, SQLAlchemy, and Genshi to get anything useful done with it. The TG2 docs are deliberately less detailed than the TG1 docs in some cases because it's considered that the external docs are better than they used to be. Whether this sort of thing is an obstacle or an investment depends on your own requirements.


Django is definitely worth learning, and sounds like it will fit your purposes. The admin interface it comes with is easy to get up and running, and it does use authentication.

As for "anything lower level", if you mean sql, it is entirely possible to shove sql into you queries with the extra keyword. Stylistically, you always try to avoid that as much as possible.

As for "not learning anything"...the real question is whether your preference is to be primarily learning something lower-level or higher-level, which is hardly a question anyone here can answer for you.


Pylons seems a great tool for me:

  • a real web framework (CherryPy is just a web server),
  • small code base - reuse of other projects,
  • written entirely with WSGI in mind, based on Paste,
  • allows you to code the app right away and touch the low level bits if it's necessary,

I've used CherryPy and TurboGears and look at many other frameworks but none of them were so light and productive as Pylons is. Check the presentation at Google.


I'm a TurboGears fan, and this is exactly the reason why: a very nice trade-off between control and doing things right vs. easy.

You'll have to make up your own mind of course. Maybe you'd prefer to learn less, maybe more. Maybe the areas that I like knowledge/control (database for example), you couldn't care less about. And don't misunderstand. I'm not characterizing any frameworks as necessarily hard or wrong. It's just my subjective judgment.

Also I would recommend TurboGears 2 if at all possible. When it comes out, I think it will be much better than 1.0 in terms of what it has selected for defaults (genshi, pylons, SqlAlchemy)


I would suggest for TurboGears 2. They have done a fantastic job of integrating best of Python world.

WSGI: Assuming you are developing moderately complex projects/ business solutions in TG2 or some other framework say Grok. Even though these frameworks supports WSGI does that mean one who is using these frameworks have to learn WSGI? In most cases answer is No. I mean it's good have this knowledge no doubt.

WSGI knowledge is probably is more useful in cases like

  • 예를 들어 표준 스택의 일부로 제공되지 않는 미들웨어 또는 다른 구성 요소를 사용하고 싶습니다. ZODB가없는 TG 또는 Grok가있는 Authkit .
  • 통합을하고 있습니다.

CherryPy 는 좋지만 트랜잭션이 끝날 때 데이터베이스 커밋 / 롤백 처리, json 노출, 이러한 경우 TG, Django와 같은 프레임 워크와 같은 유효성 검사를 고려해보십시오.


Web2py는 여기서 비밀 소스입니다. 그것을 확인하는 것을 놓치지 마십시오.

참고 URL : https://stackoverflow.com/questions/702179/django-vs-other-python-web-frameworks

반응형