2012-05-02 4 views
2

나는 그림과 텍스트 프로그램을 웹 사이트 기반 응용 프로그램에 대한 50mb 파이썬 점진적 간격 회상 평가 시스템을 변환하는 프로젝트에 노력하고 있습니다. (그리고 그 주위에 웹 사이트를 디자인하십시오.) 사용자 정보를 자주 저장하기 위해 데이터베이스에 연결하여 서버 측을 올바르게 실행해야합니다. 내가 아무것도 모른다고 가정 할 때, 이것을 완성하는 가장 좋은 구조는 무엇입니까? 다양한 옵션이있는 것 같아서 길을 잃어 버렸습니다.웹 사이트 응용 프로그램에 파이썬 프로그램

저는 CGI를 사용하여 원래 파이썬 코드의 웹 UI를 만들었습니다. 이것은 구현할 수 있습니까?

무엇 에 대한 피라미드/uWSGI/탑/플라스크

또는 장고? (비록 내가이 프로젝트에 대해 자제하라고 말했지만)

+0

CGI 일 필요가있는 경우, mod_wsgi 등은 웹 서버에서 매우 얇은 래퍼 (및 스레드 풀 등)를 제공합니다. – ChristopheD

답변

1

나는 파일런이 (새로운 피라미드) 아주 좋다고 들었지만 나는 개인적으로 장고를 사용한다. 나는 그것에 만족한다. CGI를 사용하려고 시도하지 마라. 그것이 내가 실수 한 동일한 실수이기 때문이다. 그리고 나는 나중에 모든 html을 바꾸는 것이 엉덩이의 고통이라고 생각했다.

0

장고에는 현재 데이터베이스의 초기 모델을 만드는 데 도움이되는 명령 (./manage.py inspectdb)이 있습니다. 데이터베이스를 다시 디자인하기로 결정하면 데이터를 새로운 스키마로 쉽게 이동시킬 수 있습니다. 개인적으로, 나는 장고를 좋아하지만 다른 것들은 아마도 당신의 어플리케이션에 매우 잘 어울릴 것이다.

서버로 다시 통신하려면 아마도 AJAX를 사용할 수 있습니다.

7

좋은 성공 했어 프로젝트의 설명은 매우 모호하기 때문에, 당신에게 좋은 조언을하기 어려울 수 있습니다 - 세계에서 어떤이 50메가바이트 파이썬 간격 리콜 등급을 졸업 "입니다 그림 및 텍스트 프로그램을위한 시스템 "??? :) - 제가 목록의 옵션들 사이의 차이를 설명하려고합니다 :

Django은 일종의 통합 솔루션으로, 템플릿 시스템, ORM, 양식 프레임 워크 등을 포함합니다.

장고는 모두 밀접하게 묶여 있기 때문에 내장 된 관리 인터페이스, 플러그 형 응용 프로그램 등과 같은 몇 가지 멋진 기능을 제공합니다. 그렇게하지 않으면 전통적인 웹 사이트를 쉽게 시작할 수 있습니다. 너 자신 그 물건을 만들 필요가있다. 예를 들어 Django로 블로그 사이트를 구축하려면 데이터베이스 모델, 몇 가지 경로 및 몇 가지보기를 정의해야합니다. 기본 제공 관리 인터페이스를 사용하여 블로그 항목을 추가 및 편집하고 다음을 사용하여 인증 할 수 있습니다. 플러그 가능한 인증 모듈.

그러나 가격은 물론 모든 비트가 함께 작동하도록 장고는 어느 정도 장고가 제공하는 기술을 사용해야합니다. 즉, 장고 ORM을 사용하여 모델을 정의하고 장고 템플릿을 사용하여 템플릿을 작성해야합니다. . 다른 비트를 다른 비트로 바꿀 수는 있지만 프레임 워크의 나머지 부분에서는 잘 작동하지 않을 것입니다. 즉, SQLAlchemy와 같은 다른 ORM을 사용하여 데이터베이스에 액세스 할 수 있습니다. 그러나 그러한 모델은 장고의 관리자와 작동하지 않습니다. 인터페이스.

Django는 어느 정도까지는 데이터베이스 테이블의 특정 구조 (예 : Python 코드에 정의 된 모델을 기반으로 테이블을 만들 수 있어야 함)를 기대하며 기존 데이터베이스와의 작업이 더 어려워 질 것으로 예상합니다.또한, 내 이해는 당신이 SQL 데이터베이스를 기대합니다.

내 의견으로는 장고는 기존의 plugabble 앱 및 기타 장고 기능을 사용할 수있는 "일반적인"장고 웹 사이트 (뉴스 웹 사이트 용으로 제작 됨)를 만드는 데 아주 좋은 선택입니다.

반면에 피라미드은 데이터베이스 액세스를 위해 특정 기술을 사용할 필요가 없습니다. 실제로 데이터베이스가 필요하지 않습니다. 데이터로 작업하는 응용 프로그램을 만들 수 있습니다 파일 시스템에 저장된 ZODB 또는 일부 분산 NoSQL 저장소와 같은 객체 데이터베이스에 저장됩니다. 어쩌면 일부 XML 파일 및 이미지 모음 ...

SQL 데이터베이스를 사용할 때 데이터베이스가 특정 구조를 가질 것으로 기대하지 않습니다. 또한 추천 된 Pyramid의 ORM 인 Django보다 더 유연하고 강력한 것으로 간주됩니다 ORM

특정 템플릿 라이브러리 또는 양식 라이브러리를 사용할 필요가 없으므로 필요에 맞는 것을 선택할 수 있습니다.

피라미드는 경로 매핑 이외에도 대부분의 웹 프레임 워크의 기본 기능인 경로 매핑을 필요로하지 않습니다. 피라미드는 URL 트래버 설을 지원하며 이는 계층 적 데이터 구조로 작업하는 데 매우 효과적입니다.

특정 기술을 사용할 필요가 없지만 Pyramid는 일반적인 사용 사례에 적합한 템플릿을 제공합니다.

이러한 유연성의 비용은 Pyramid의 탁월한 WSGI 지원이이를 활용하기는하지만 사용자 지정 Pyramid 웹 사이트에 변경없이 적용 할 수있는 기존 "앱"을 찾기가 더 어려울 수 있습니다.

Pylons은 얼마 전에 프로젝트가 repoze.bfg와 병합 된 후에 Pyramid라고합니다.

는 uWSGI 응용 프로그램/피라미드 응용 프로그램을 제공하는 프로토콜 (또는 다른 WSGI를 준수하는 응용 프로그램)

플라스크의 더 - 그것을 사용하지, 다른 어쩌면 누군가가 당신에게 개요를 제공 할 것입니다.

Django와 Pyramid 사이의 선택은 "장고의 내장 기능을 얼마나 많이 내 사이트에서 사용할 수있을 것인가"라는 질문에 달려 있습니다. 장고를 사용하지 않으면 자동 관리 또는 써드 파티 플러그인 응용 프로그램을 많이 사용하려면 - 다른 모든 것은 피라미드에서 더 좋습니다 :)

+0

전반적인 답변이 좋습니다. –

1

응용 프로그램이 이미 존재하는 데이터베이스와 대화 할 필요가 있다면 django는 많은 가치의 IMO를 사지 않을 것입니다. DB 스키마가 django가 기대하는 것 (자동 증가 int 주키 등)을 따르지 않으면 admin 인터페이스가 작동하지 않기 때문에, 예상 스키마를 가정하는 다른 모든 웹 프레임 워크에 대해서도 마찬가지입니다.

그렇다면 sqlalchemy가 최선의 방법입니다. 그것은 orm 계층을 가지고 있지만 그것을 사용하지 않아도됩니다. 쿼리 인터페이스를 사용하여 많은 돈을 벌 수 있습니다.

webframeworks가 실행되는 한 sqlalchemy를 사용할 수있는 모든 기능을 제공합니다. 위에서 언급 한 이유 때문에 Django, Zope 및 아마도 web2py가 아닌 것입니다. Zope의 경우 가치는 다소 zodb가 뒷받침한다는 사실에서 파생됩니다.그러나 zodb는 기존 데이터베이스와 데이터로는 전혀 도움이되지 않습니다.

웹 프레임 워크의 남은 부분 중에서 선택 기준을 사용하는 것은 요청을보기로 라우팅하는 능력입니다. 그리고 그것은 당신의 URL 생성 전략과 얼마나 잘 일치합니다. IMO, 피라미드는이 영역에서 매우 유연합니다. 그러나 당신은 그것을 필요로하지 않을 수도 있습니다. 플라스크 또는 병으로 얻을 수 있습니다. 또는 심지어 똑바로 webob.

또 다른 약간은 덜 중요한 기준

은 슈퍼 쉬운 슈퍼 털이에서 잘 확장 때문에

내 개인적인 선택은 피라미드 ... 템플릿 엔진/언어, 대부분의 프레임 워크는 jinja2 등과 같은 더 인기있는 사람을 지원하는 것이다 요청 라우팅 부서. 그러나 다시, 당신이 당신의 URL가 어떻게에 작동하는 원하는지에 따라서, 당신은 그것을 필요로하지 않을지도 모른다.

관련 문제