원본 텍스트: http://www.devshed.com/c/a/Python/Karrigell-for-Python/
Python은 웹 개발을 위해 특별히 설계되지 않았기 때문에 많은 Python 사용자는 이제 Python을 프레임워크에서 실행할 수 있는 프로그램을 개발하고 있습니다. Karrigell은 현재 많은 Python/웹 프레임워크 중 하나입니다. 소개
Karrigell
은 웹 개발을 위한 다양한 솔루션을 제공하는 강력하고 유연한 Python/웹 프레임워크입니다. 중요한 것은 설치와 사용이 매우 간단하여 Karrigell을 사용하는 경우 Python 초보자도 혼동하지 않을 것이며 Karrigell은 간단한 구조로 인해 Python의 일부 기능을 제한하지 않고 자체 웹 서버를 사용하여 작업을 완료할 수 있습니다. , 하지만 다른 웹 서버(예: apache)와의 작업도 매우 쉽기 때문에 Karrigell을 선택하면 이전에 사용했던 웹 서버를 계속 사용할 수 있습니다.
이 기사는 Karrigell부터 시작하여 설치부터 시작하겠습니다. Karrigell의 몇 가지 중요한 기능 소개
Karrigell 설치
위에서 언급한 것처럼 Karrigell 설치는 전혀 번거롭지 않습니다. 그런 다음 Karrigell.py를 두 번 클릭하여 Karrigell의 내장 웹 서버를 시작하십시오. 지금 다른 웹 서버와 함께 Karrigell을 사용하고 싶지 않다면 여기서 Karrigell 설치가 종료됩니다
. Karrigell과 통합할 웹 서버를 설정하려면 Apache를 예로 들어보겠습니다. 이제 Apache가 Karrigell에 관련 요청을 보낼 수 있도록 Karrigell을 Apache 백그라운드에서 실행해야 합니다.
Apache는 일반적으로 포트 80에서 실행되므로 Karrigell에 대해 다른 실행 포트를 설정해야 합니다. 이 목적을 달성하려면 두 가지 방법이 있습니다. 하나는 명령줄을 사용하여 완료하는 것이고, 먼저 Karrigell의 구성 파일을 변경할 수 있습니다. 명령줄을 사용하여 포트 8080에서 Karrigell을 실행합니다.
C:Karrigell>Karrigell.py -P 8080
두 번째로 Karrigell.ini를 찾은 다음
port=8080
문장을 추가해야 합니다.이제 Apache를 구성해야 합니다. 관련 요청을 Karrigell로 리디렉션합니다. 일반적으로 Apache가 PHP와 같은 정적 파일 요청을 처리하기를 원합니다. Apache와 동일한 경로를 공유하거나 별도의 경로를 설정할 수 있습니다.
Apache가 Karrigell에 요청을 전달하도록 요구하려면 Apache의 httpd.conf 파일에 다음을추가
해야 합니다.
RewriteRule ^/(.*).py(.*) http://localhost:8080/$1.py$2 [L,P]
RewriteRule ^/(.*).ks(.*) http://localhost:8080/$1.ks$2 [L,P]
RewriteRule ^/(.*).hip(.*) http://localhost:8080/$1.hip$2 [L,P]
RewriteRule ^/(.*).pih(.*) http://localhost:8080/$1.pih$2 [P]
원하는 경우 이 문서에서는 특정 파일에 대한 모든 요청이 Karrigell로 전달되도록 설정할 수 있습니다. , testarea 경로가 사용되므로 httpd.conf를 다음과 같이 설정합니다.
RewriteEngine On
RewriteRule ^/testarea(.*) http://localhost:8080/testarea$1 [P]
물론 다음과 같이 할 수 있습니다:
RewriteEngine On
RewriteRule ^/testarea/(.*).py(.*)
http://localhost:8080/testarea/$1.py$2 [L,P]
RewriteRule ^/testarea/(.*).ks(.*)
http://localhost:8080/testarea/$1.ks$2 [L,P]
RewriteRule ^/testarea/(.*).hip(.*)
http://localhost:8080/testarea/$1.hip$2 [L,P]
RewriteRule ^/testarea/(.*).pih(.*)
http://localhost:8080/testarea/$1.pih$2 [P]
스크립트 및 서비스
Python 스크립트와 Karrigell 서비스는 Karrigell을 사용하는 Python 개발자가 가장 쉽게 접근할 수 있는 두 가지 개념입니다. Python 스크립트는 Python 스크립트이며 개발자는 print 문을 사용합니다. 아직 이해하지 못한 경우 testarea 디렉토리를 생성한 다음 첫 번째 Python 스크립트 생성을 시작합니다. test.py:
print "<center>"
"안녕하세요!"를 인쇄하세요.
"<br /><br />" 인쇄
"Karrigell이 구성되어 작동 중입니다."를 인쇄합니다.
print "</center>"
브라우저에서 이 파일을 엽니다. 이전에 Karrigell을 올바르게 설정한 경우 출력이 표시됩니다.
Python 스크립트는 또한 쉽게 양식을 사용할 수 있습니다. 사용자가 자신의 이름을 입력할 수 있는 간단한 페이지를 만들어 보겠습니다. Askname.py:
if QUERY.has_key ( "name" ):
"당신의 이름은", _name + "."를 인쇄합니다.
또 다른:
"당신의 이름은 무엇입니까?<br />"를 인쇄하세요.
"<양식>"을 인쇄하세요.
print "<입력 유형='텍스트' 이름='이름' /><br />"
print "<입력 유형='제출' 값='진행' />"
print "</form>"
Karrigell 서비스는 Python 스크립트와 유사하게 작성됩니다. 이 작업의 목적은 지정된 메서드의 이름이 Karrigell 서비스 뒤에 전달되는 것입니다.
call testhttp://localhost/testarea/test.ks/test
메소드를
사용하면 실제로def index()
예제를 작성할 수 있습니다
.
"인덱스 함수"를 인쇄합니다.
데프 테스트():
print "Test function."
메서드 이름을 전달하지 않고 이러한 Python 스크립트를 사용하면 프로그램은 기본적으로 인덱스 메서드를 실행합니다. 메서드 이름 test가 전달되면 존재하지 않는 메서드가 호출됩니다. 비정상적으로 던질 것입니다.
def index()를
만들어 보겠습니다
.
"당신의 이름은 무엇입니까?<br />"를 인쇄하세요.
"<form action='nameSubmit'>"을 인쇄하세요.
print "<입력 유형='텍스트' 이름='이름' /><br />"
print "<입력 유형='제출' 값='진행' />"
"</form>" 인쇄
def nameSubmit(이름):
print "Your name is", name + "."
물론 메소드에 대한 외부 공개 액세스를 허용하는 것은 매우 위험한 일입니다. 권한이 없는 사용자가 메소드에 액세스하는 것을 방지하려면 아래에 설명된 대로 메소드 접두어를 지정하십시오
.
Pass가
_private 메소드에 액세스하려고 시도하면 예외가 발생합니다.
Askname.py에서HIP를 사용하는 경우
주목할 만한 한 가지가 있습니다. 이 코드에는 print를 사용하지 않고 직접 출력할 수 있는 경우가 있습니다. 운 좋게도 Karrigell은 HTML Inside Python이라는 기능을 제공하며 이것은 모든 불쾌한 인쇄 문을 정리합니다. 그리고 TML Inside Python으로의 변환도 매우 쉽습니다. 제거됨 Askname.py에서 인쇄물을 삭제하고 파일 이름을 Askname.hip
f QUERY.has_key( "name" )로 바꿉니다.
"당신의 이름은", _name + "입니다."
또 다른:
"당신의 이름은 무엇입니까?<br />"
"<양식 방법='POST'>"
"<입력 유형='텍스트' 이름='이름' /><br />"
"<입력 유형='제출' 값='진행' />"
"</form>"
이것은 HTML Inside Python입니다. Karrigell은 파일을 검사하고 필요한 곳에 자동으로 인쇄를 추가합니다. HTML Inside Python은 Karrigell이 HTML을 얼마나 쉽게 배울 수 있는지를 보여
줍니다
.
Inside Python은 당연히 Python Inside HTML도 제공합니다. 평소와 같이 특수 태그에 Python 문을 작성한 다음 최종 결과를 사용자의 브라우저로 보냅니다. random.pih
<% import random %>
난수: <b><% print random.random() %></b>
보시다시피 Python Inside HTML의 개념은 실제로 매우 간단합니다. 코드 블록은
<%= 무작위
입니다..random() %>
하지만 양식 데이터 처리와 같은 더 복잡한 논리를 처리하는 경우에는 어떻게 해야 할까요? 양식 데이터는 Python 스크립트에서 처리되는 것처럼 처리할 수 있습니다. 이것은 Askname.py Askname.pih
<%
의 복제본입니다.QUERY.has_key( "이름")인 경우: %>
귀하의 이름은 <%= _name %>입니다.
<% 끝 %>
<% 그 외: %>
당신의 이름은 무엇입니까?<br />
<양식 방법='POST'>
<입력 유형='텍스트' 이름='이름' /><br />
<입력 유형='제출' 값='진행' />
</form>
<% end %>
<% end %>를 사용하면 위의 조건문 들여쓰기와 마찬가지로 코드 블록의 끝을 표시합니다. 또 다른 대안은 Indent 태그를 사용하는 것입니다.
코드 들여쓰기를식별
합니다.
<% if QUERY.has_key ( "이름" ): %>
귀하의 이름은 <%= _name %>입니다.
<% 그 외: %>
당신의 이름은 무엇입니까?<br />
<양식 방법='POST'>
<입력 유형='텍스트' 이름='이름' /><br />
<입력 유형='제출' 값='진행' />
</form>
</indent>
기능을 더
사용해 보겠습니다
. 태그는 Python 스크립트인 tagtest.py를 통해 사용할 수 있습니다.
rom HTMLTags import *
print CENTER ( B ( "Test." ) )
세션도 Karrigell에서 처리할 수 있으며 Karrigell도 객체 지향에 가까운 좋은 세션 메커니즘을 제공합니다. Karrigell 세션에서 시연할 간단한 코드를 만들어 보겠습니다. 첫 번째 예로 돌아가면 사용자에게 행운의 숫자가 주어집니다. 사용자가 페이지를 새로 고치면 숫자가 세션에 저장되기 때문에 숫자는 그대로 유지됩니다. 새로운 행운의 숫자를 가져오려면 sessin을 닫으면 됩니다. Luckynumber.ks라는 Karrigell 서비스를 만들고 다음 코드를 입력하세요.
임의
사용자 가져오기 = Session()
def index():
dir( user )에 "luckyNumber"가 없는 경우:
user.luckyNumber = 무작위.randint (0, 20)
"당신의 행운의 숫자:"를 인쇄하세요, user.luckyNumber
"<br /><br />" 인쇄
"<a href='reset'>행운의 숫자 재설정</a>"을 인쇄하세요.
데프 재설정():
사용자.닫기()
print "당신의 행운의 숫자가 재설정되었습니다."
"<br /><br />" 인쇄
print "<a href='index'>뒤로</a>"
결론
Karrigell은 Python 스크립트, Karrigell 서비스, HTML Inside Python 및 Python Inside HTML의 네 가지 방법을 제공합니다. 그러나 모두 고유한 특성을 가지고 있습니다. 공통적인 장점 중 하나는 사용의 단순성입니다. Karrigell은 웹 개발을 우아하고 단순하게 만듭니다. Karrigell을 단독으로 사용하든, Apache와 함께 사용하든 놀라울 정도로 간단합니다. 왜냐하면 초보자든 베테랑이든 상관없이 Karrigell은 좋은 선택이기 때문입니다. .