2014-11-10 4 views
-1

CherryPy를 처음 사용하므로 나와 함께하시기 바랍니다. 내가하고 싶은 것은 사용자가 특정 URL로 이동할 때 특정 작업을 수행하는 것입니다. URL은 대부분 한 부분을 제외하고 항상 동일합니다. URL은 http://myserver.mydomain.com/show_item.cgi?id=12345과 같습니다. URL은 12345를 제외하고는 항상 동일합니다. "숫자 문자열"을 가져 와서 변수에 넣고 해당 변수를 기반으로 즉석에서 작성되는 다른 URL로 리디렉션하고 싶습니다. URL을 구축하기위한 논리가 있습니다. 들어오는 URL을 가로 채고 "숫자 문자열"을 추출하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다.CherryPy : 사용자가 특정 URL로 이동하면 특정 작업 수행

+0

당신은 당신이 시도해야 CherryPy를 처음 사용하는 경우 [워드 프로세서를 읽을] (http://cherrypy.readthedocs.org/) 이미 해결하려고 한 내용을 다음과 같은 질문을하고 우리에게 보여 전에 문제. 적어도 질문에 대한 답변은 거의 없습니다. (http://cherrypy.readthedocs.org/en/latest/tutorials.html#tutorial-3-my-urls-have-parameters). – saaj

+0

Doh! 나는 사실이 문서들을 많이 읽었지 ... 내가 어떻게 그것을 놓쳤는 지 모르겠다. 유일한 문제는 내 함수 이름에 '.'이 있어야한다는 것입니다. 그 안에 (show_item.cgi) 물론 파이썬이 좋아하지 않는 것들이 있습니다. 주위를 둘러 보는 방법에 대한 아이디어가 있습니까? – fender4645

답변

0

오, 당신이 정말로 CGI와 비슷한 파일 처리기 URL을 모의하고 싶었는지 확실하지 않았습니다. 대답은 is still there이지만 최근 문서 변경으로 인해 찾기가 어려울 수 있습니다.

당신은 /path/to/my.html 같은 URI에 점을 사용할 수 있지만, 파이썬 메소드 이름은 이 점을 허용하지 않습니다. 이 문제를 해결하기 위해 기본 발송자는 URI의 모든 점을 페이지 처리기를 찾으려고하기 전에 밑줄로 변환합니다. 예에서 이므로 페이지 처리기의 이름을 def my_html으로 지정하십시오.

그럼 다음을 통해 브라우저를 http://127.0.0.1:8080/show_item.cgi?id=1234으로 이동할 수 있습니다.

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 


import cherrypy 


config = { 
    'global' : { 
    'server.socket_host' : '127.0.0.1', 
    'server.socket_port' : 8080, 
    'server.thread_pool' : 8 
    } 
} 


class App: 

    @cherrypy.expose 
    def show_item_cgi(self, id): 
    raise cherrypy.HTTPRedirect('https://google.com/search?q={0:d}'.format(int(id))) 


if __name__ == '__main__': 
    cherrypy.quickstart(App(), '/', config) 
+0

완벽한! 매력처럼 작동합니다! 다시 한번 감사드립니다. – fender4645

0

saaj 내 생각에 내 질문에 대답 한 것 같아. here. 내 후속 조치는 내 시나리오에 고유하므로 필요한 경우 더 자세히 조사하고 다른 질문을하겠습니다.