2011-08-24 3 views
4

짧은 파이썬 튜토리얼을 진행할 예정이지만 마지막 연습을 할 수 없습니다. 이 app.pyPython - 예외 lpthw.web 프레임 워크에서 "템플릿에 이름이없는 인덱스"가 있습니다.

import web 

urls = (
    '/', 'Index' 
) 

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

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

class Index(object): 
    def GET(self): 
     greeting = "Hello World" 
     return render.index(greeting = greeting) 

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

의 소스 코드와이

$def with (greeting) 

<html> 

    <head> 

     <title>Gothons of Planet Percal #25</title> 

    </head> 

<body> 

$if greeting: 
    I just wanted to say <em style="color: green; font-size: 2em;"> 
    greeting</em>. 

$else: 
    <em>Hello</em>, world! 

</body> 

</html> 

파일 app.py이 디렉토리 아래에 index.html을 뷰입니다 : C : \ 사용자 \ 루카스 \ 바탕 화면 \ 알아 파이썬 어려운 방법 \ EX50 \ gothonweb 빈 및 index.html을 \입니다에서 : C : 루카스 \ 바탕 화면 \ 사용자 \ \ 알아 파이썬 어려운 방법 \ EX50 \ gothonweb 템플릿

그래서

, 내가 원하는 \ 예제 코드를 실행하기 위해 명령 프롬프트에 다음을 입력합니다 :

그 후
C:\Python26\python.exe "C:\Users\Lucas\Desktop\Learn Python The Hard Way\ex50\gothonweb\bin\app.py" 

, 에 "http : //0.0.0 : 8080" 내 브라우저 에 http://localhost:8080/로 이동하지만 다시

<type 'exceptions.AttributeError'> at/
No template named index 
Python C:\Python26\lib\site-packages\web\template.py in _load_template, line 992 
Web  GET http://localhost:8080/ 
로 시작하는 긴 역 추적을 얻을 콘솔에 표시, 이렇게됩니다

무슨 일이 일어나고 있으며 어떻게 수정합니까?

미리 감사드립니다.

return render.Index(greeting = greeting) 

그리고 당신의 urls 튜플의 요구를 : 당신은 몇 가지 오타가

답변

1

, 당신은 render은 (경로의 클래스 이름과 동일해야 함)를 사용할 때 Index로보기를 참조해야 끝에 오는 쉼표 :

urls = (
    '/', 'Index', 
) 

또한 템플릿의 이름이 Index.html인지 확인하십시오. web.py tutorial을 보면, 규칙에 따라 경로 클래스에 소문자를 사용하는 것처럼 보입니다.

+0

감사합니다. index.html의 이름을 Index.html로 변경하고 귀하가 말한 바를 정확히 수행했지만 여전히 작동하지 않습니다. 예외는 이제 다음과 같습니다. 인덱스라는 템플릿이 없습니다. – Lucas

+0

아, 경로를 보면'templates /'는 app.py와 관련이 있어야합니다 (일반적인 web.py에서는). 어쩌면'templates' 폴더와 app.py를 같은 장소로 옮겨 보시겠습니까? – zeekay

+0

이것이 실패하면 web.py의 공식 버전을 다운로드하십시오. https://github.com/webpy/webpy/zipball/webpy-0.35 – zeekay

3

OSX에서도이 문제가 발생했습니다. 궁극적으로 제드 쇼 (Zed Shaw)는 제게 도움을 청했습니다. 제가 실수 한 것을 보았습니다. 내가

~/projects/gothonweb/bin $ python app.py 

을 실행중인

데이빗 내가이 실행 될 필요가 있다고 생각 나게 :

~/projects/gothonweb $ python bin/app.py 

이 템플릿 폴더를 찾을 수 있도록. 내가 한 후에 그것은 매력처럼 작동했습니다.

+0

더 자세히 설명해주십시오. Mac이 있는데 Lucas와 같은 오류가 발생합니다 ... 예 : 어떻게해야합니까하지만 내 환경 내에서 당신이 아닌 :) – Clement

2

windows에서 'folder'는 "c : \"가 아닌 "c : \"와 같이 작성해야하며 전체 경로를 사용해야합니다. 그래서 올바른 코드가 render = web.template.render('d:\\documents\\python\\templates\\') 입니다 (app.py는 D에 : \ 문서 \ 파이썬)

0

당신은 너무

파이썬 웹/template.py --compile 템플릿과 같은 템플릿을 컴파일해야 할 수도 있습니다

Google app 엔진을 사용하여 web.py를 사용하는 사용자.

1

글쎄, 나는 똑같은 문제로 고생했다. 나는 옳은 길을 가고 있지 않기 때문에 "당신"이 파일을 찾을 수 없다는 오류 메시지가 옳다고 말해야한다. 그래서 @davidheller @ 쉘 플라이가 옳다.

내가 파이썬을 작성하는 IDE로 PyCharm를 사용

, 그래서 여기 내 솔루션입니다 : 나는 ..가 다음가는 파일을 발견하여 render = web.template.render('../templates/') bin 디렉토리 아래에있는 app.py을 실행입니다.

우리는 (심지어 창에서) 현재 경로에 대해 확인해야합니다, 결론을하려면, 아래와 같이 상대 경로 나 절대 경로 모두, Windows 환경에서 사용할 수 있습니다

  1. 절대 경로를.

    절대 경로. Windows가 "/"와 "\"모두를 수용하기 때문에, 우리는

    render = web.template.render('C:/Users/Lucas/Desktop/Learn Python The Hard Way/ex50/gothonweb/templates/') 
    

    또는

    render = web.template.render('C:\\Users\\Lucas\\Desktop\\Learn Python The Hard Way\\ex50\\gothonweb\\templates\\') 
    

    주의를 작성할 수, 파이썬 인터프리터는 "\\""\"

  2. 상대 경로를 해석합니다.

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

내가 같은 운동을하고 있는데 단순히 cmd를 가고, 내 lpthw 디렉토리에 CD 내부 프로젝트 골격의 폴더를 포함하는과 할 :

> python bin/app.py 

내가 당신을 생각 프로젝트 뼈대에서 모든 파일을 하나의 폴더에 넣고 거기에서 앱을 실행해야합니다. 희망이 도움이됩니다. :)

관련 문제