2013-12-22 4 views
0

나는 differents의 진입 점은

가 나는 또한 싶어 ...이

http://localhost:8080/ 

http://localhost:8080/problem2/ 

http://localhost:8080/problem3/ 

같은 구조를 갖고 싶어이

-src 

    - app.yaml 
    - main.py 
    - package_problem_2 
     - main.py 
    - package_problem_3 
     - main.py 

나는 것 같은 파이썬 구조 내 웹의 differents 폴더에 대해 main.py를 다르게하고 싶습니다. 내 말은, 만약 내가 http://mydomain:8080이라면, 그것은 요청을 처리하고자하는 src/main.py입니다. 그러나, 내가 http://localhost:8080/problem2에 있다면 그것은 package_problem_2/main.py 요청을 처리해야합니다.

이것이 가능합니까?

+0

포럼 사이트와 달리 "감사"또는 "모든 도움을 주셨습니다"또는 [그래서]의 서명을 사용하지 않습니다. "[안녕하세요, '고마워,'태그 라인 및 인사말을 게시물에서 삭제해야합니까?] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be 참조) -removed-from-posts) –

+0

예, 할 수 있습니다. [Documentation] (https://developers.google.com/appengine/docs/python/config/appconfig)을 참조하십시오. 당신이 시도하고 싶은 것을 보여주기 위해 질문을 편집하고 다시 편집하십시오. (예를 들어, 어려움이 있다면, 좋은 일이라면) –

답변

0

webapp2 프레임 워크를 사용하고 있습니까?

네 개의 파일이 필요합니다. 단순화를 위해, 모두가 당신의 응용 프로그램의 루트 폴더에 있습니다 : 당신의 애플리케이션 제목에

app.yaml 
urls.py 
SampleController.py 
Sample.html 

, 당신은 이런 식으로 뭔가가 있어야합니다 라우팅 모든 URL 패턴을 애플리케이션 엔진을 알려줍니다

handlers: 
- url: /.* 
    script: urls.ap 

urls.py.

그런 다음 당신의 urls.py에,이 구조를 가지고 : 당신의 문제에

import webapp2 
import SampleController 

#For each new url structure, add it to router. 
#The structure is [py filename].[class name inside py file] 
app = webapp2.WSGIApplication(debug=True) 
app.router.add((r'/', SampleController.SampleHandler)) 


def main(): 
    application.run() 

if __name__ == "__main__": 
    main() 

을 세 가지 구조를 가지고 : /,/problem2/problem3. 다음과 일치합니다.

동일한 처리기로 이동할지 여부는 사용자가 결정해야합니다.

SampleController.py은 다음과 같습니다

import webapp2 
import os 

class SampleHandler(webapp2.RequestHandler): 
    def get(self): 
     template_values = { 
      'handler': 'We are in SampleHandler', 
      'param2': param2 
     } 
     path = os.path.join(os.path.dirname(__file__), 'Sample.html') 
     self.response.out.write(template.render(path, template_values)) 


class SampleHandler2(webapp2.RequestHandler): 
    def get(self): 
     template_values = { 
      'handler': 'We are in SampleHandler2', 
      'param2': param2 
     } 
     path = os.path.join(os.path.dirname(__file__), 'Sample.html') 
     self.response.out.write(template.render(path, template_values)) 


class SampleHandler3(webapp2.RequestHandler): 
    def get(self): 
     template_values = { 
      'handler': 'We are in SampleHandler3', 
      'param2': param2 
     } 
     path = os.path.join(os.path.dirname(__file__), 'Sample.html') 
     self.response.out.write(template.render(path, template_values)) 

공지 사항이 모두 동일한 Sample.html 파일로 이동합니다.

Sample.html은 표준 html 코드입니다.

+0

'SampleHandler2'에서 정의하고 싶기 때문에 정확히 원하는 것이 아닙니다. (다른 패키지에 있습니다. 'main.py')이 핸들러가 가질 수있는 모든 리다이렉션을 말합니다.이 모듈에서이 것을 정의하고 싶습니다. 'app = webapp2.WSGIApplication ([('/ problem2 /', MainHandlerForProblem2), ('/ problem2/thanks', ThanksHandlerForProblem2)], 디버그 = True) ' "default"패키지의 메인'main.py '에 있기 때문에 – Manuelarte