2011-02-03 3 views
2

가벼운 웹 프레임 워크로 web.py를 사용하여 놀고 있습니다. 내가 내 페이지의 실제 구현을 루트 파일 대신 별도의 파일로 옮기려고 할 때 문제가 발생했습니다. 데모로, 내 core.py 파일은 다음과 같습니다 :web.py/pythonpath confusion

import web, sys, os 
sys.path.append(os.path.abspath(os.path.dirname(__file__))) 


urls = (
    '/', 'index' 
) 

app = web.application(urls, globals()) 

render = web.template.render('templates/') 

if __name__ == "__main__": 
    app.run() 

필자는 core.py.과 같은 수준 index.py이라는 파일로 내 구현을 이동 내 구현은 다음과 같습니다

class index: 
    def GET(self): 
     return "Hello world" 

을하지만, 난 내 응용 프로그램을 실행할 때마다, 나는 오류 얻을 :

<type 'exceptions.KeyError'> at /

아무도 무슨 일이 일어나고 있는지 말해 줄 수 있습니까?

답변

4

http://webpy.org/tutorial3.en#urlhandling에 따르면 web.py는 전역 네임 스페이스의 URL에 지정한 클래스를 조회합니다.

core.py에는 index라는 이름의 클래스가 없습니다 (이동 한 후에), 이것이이 키 오류의 원인입니다. 내 테스트에서는 core.py에서 인덱스 클래스를 가져 와서 수정할 수 있습니다.

from index import index 

3

당신은 모듈로 크롤 점을 추가 할 수 있습니다 (그래서 내가 틀렸다면 수정하시기 바랍니다, 이전 web.py 사용하지 않은). 그래서 당신은 파일 이름 file.py있는 폴더 컨트롤러가 있다고 가정하면 컨트롤러라는 이름의 인덱스에 액세스하고 싶었 :

from controllers import * 

urls = (
'/', 'controllers.file.index' 
) 
0

나는 버그가 템플릿에 같은데요합니다. 내 템플리트의 if 문에서 ':'을 잊었을 때이 오류가 발생했습니다.