3

그래서 Google 앱 인사말 자습서를 완료했습니다. 지금까지 잘. 그런 다음 새로운 데이터 저장소 모델을 추가하고 기존의 처리기에서 설정하기로 결정했습니다. "content2"라는 두 번째 컨텐트 필드를 추가 한 다음 Handbook()에서 핸들러를 설정하려고 시도했지만 보크 아웃을 유지합니다. 나는 그것이 가장 어색한 오류가 될 것이라고 확신하지만, 나는 atm을 난처하게된다. 어떤 아이디어?Google 앱 엔진 자습서 문제 - 새로운 데이터 저장소 모델

main.py

import cgi 

from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.ext import db 
import os 
from google.appengine.ext.webapp import template 

class Greeting(db.Model): 
    author = db.UserProperty() 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 
    content2 = db.StringProperty(multiline=True) 


class MainPage(webapp.RequestHandler): 
    def get(self): 
    greetings_query = Greeting.all().order('-date') 
    greetings = greetings_query.fetch(1000) 

    if users.get_current_user(): 
     url = users.create_logout_url(self.request.uri) 
     url_linktext = 'Logout' 
    else: 
     url = users.create_login_url(self.request.uri) 
     url_linktext = 'Login' 

    template_values = { 
     'greetings': greetings, 
     'url': url, 
     'url_linktext': url_linktext, 
     } 


    path = os.path.join(os.path.dirname(__file__), 'index.html') 
    self.response.out.write(template.render(path, template_values)) 

class Guestbook(webapp.RequestHandler): 
    def post(self): 
    greeting = Greeting() 

    if users.get_current_user(): 
     greeting.author = users.get_current_user() 

    greeting.content = self.request.get('content') 
greeting.content2 = self.request.get('content') 
    greeting.put() 
    self.redirect('/') 

class HelloWorld(webapp.RequestHandler): 
    def get(self): 
    self.response.out.write('Hello, webapp World!') 



application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/sign', Guestbook)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

index.html을

<html> 
    <body> 
    {% for greeting in greetings %} 
     {% if greeting.author %} 
     <b>{{ greeting.author.nickname }}</b> wrote: Dogs name is: {{ pet.name }} 
     {% else %} 
     An anonymous person wrote: 
     {% endif %} 
     <blockquote>{{ greeting.content|escape }}</blockquote> 
    {% endfor %} 

    <form action="/sign" method="post"> 
     <div><textarea name="content" rows="3" cols="60"></textarea></div> 
     <div><input type="submit" value="Sign Guestbook"></div> 
    </form> 

    <a href="{{ url }}">{{ url_linktext }}</a> 

    </body> 
</html> 
+0

무엇이 오류입니까? –

답변

5

난 당신의 코드를 잘못 아무것도 볼 수 없습니다. 내 머리 꼭대기에서 나는 새 항목 앞에서 흰색 간격을 확인한다고 말할 것입니다.

그 밖의 오류 메시지는 무엇입니까? 로그에 나타나는 오류 메시지는 브라우저 오류 메시지보다 훨씬 사용자 친화적입니다.

+0

Ahh는 대시 보드의 로그를 확인하지는 않았습니다. 다음은 이전에 dev 서버를 사용했을 때의 출력물입니다 : : 예기치 않은 들여 쓰기 (main.py, 47 줄) : 예기치 않은 들여 쓰기 indent (main.py, line 47) 들여 쓰기가 있는지 확인하겠습니다. S –

+0

dev 환경에서 로그를 의미합니다. 명령 프롬프트에 실시간 대시 보드 오류와 같은 오류가 표시됩니다. 그게 문제를 해결했다면 다음과 같이 대답하십시오 :) – AutomatedTester

0

일 정정. html에서 notepad ++로 복사 할 때 탭이 제대로 복사되지 않고 들여 쓰기 용 탭 대신 2 칸만 사용됩니다.

나는 단순한 파이썬 오류로 며칠 동안 고민을 겪었습니다.

감사합니다. 많은 감사드립니다.

+1

파이썬 스타일 가이드는 탭 대신 공백을 사용하도록 강력히 권장합니다 : http://www.python.org/dev/peps/pep-0008/ –

+1

또한, 그 질문을 답으로 표시하면 미래에 사람들을 돕게됩니다. –

+1

모든 언어에 대해 탭 대신 공백을 사용하는 것이 좋습니다. – Phil