2014-06-10 2 views
-3

저는 Python, GAE 및 데이터 저장소 모델을 처음 사용합니다. 그래서 내가 아직 모르는 많은 것들이 있으므로, 잠시만 기다려주십시오.404 찾을 수 없음 (리소스를 찾을 수 없음) - GAE 및 Datastore 관련 문제

저는 사람들이 항목의 '이름'과 '설명'(설명)을 게시 할 수있는 웹 서비스를 만들고 있습니다. 동일한 페이지의 표에 포함됩니다. 그러나 내가 제출 버튼을 클릭했을 때 오류가 발생했습니다 : 404 찾을 수 없음, 자원을 찾을 수 없습니다.

아래에 표시된 코드에서 많은 문제가 발생할 것으로 예상됩니다. (읽기 쉽도록 관련이 있다고 생각하는 코드의 짧은 코드 만 포함합니다.) 가장 큰 문제는 아이디어가 없습니다. 어떤 부분이 잘못되었거나 어떤 질문을해야 할지를 묻습니다. 그러나 나는이 기회를 통해 내 코드 (Jinja, HTML, GQL 등)에 관련된 모든 것에 대해 더 자세히 알기를 바랍니다.

class Events(ndb.Model): 
     name = ndb.StringProperty() 
     desc = ndb.StringProperty() 

    class Promote(webapp2.RequestHandler): 
     def get(self): 
      query = ndb.gql("SELECT * " 
          "FROM Events " 
          ) 
      template_values = {"events" : query,} 
      template = jinja_environment.get_template('promote.htm') 
      self.response.out.write(template.render(template_values)) 

     def post(self): 
      event = Events(name = self.request.get('name'), desc = self.request.get('desc')) 
      event.put() 
      self.redirect('/promote') 


    app = webapp2.WSGIApplication([('/', Main), 
            ('/publicsearch', PublicSearch), 
            ('/promote', Promote)], 
            debug=True) 

이것은 해당 페이지에 대한 HTML 코드입니다.

<div class="jumbotron"> 
<div class = "container"> 
    <form action="/promote" method="post"> 
    <fieldset> 
     <div class="row-fluid"> 
      <p> Promote your event here! </p> 

      <div class="row-fluid"> 
       <div class="span6"> 
        <p> Name of event: <br> 
         <textarea class="input-block-level" name="name" rows="1" cols = "50"> </textarea></p> 
        <p> Event description: <br> 
         <textarea class="input-block-level" name="desc" rows="3" cols = "50"> </textarea></p> 

         <p><input type="submit" value="Submit"> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

    <h4> Events feed </h4> 
    <table class="table table-bordered table-striped"> 
     <thead> 
      <tr> 
       <th width="30%">Name</th> 
       <th>Description</th> 
      </tr> 
     </thead> 
     <tbody> 
      {% for event in events %} 
      <tr> 
       <td>{{ event.name }} </td> 
       <td>{{ event.desc }} </td> 
       </tr> 
       {% endfor %} 
      </tbody> 
     </table> 
    </div> 
+3

한 가지 질문 만하도록 질문을 골라야합니다. 일반적인 코드 검토를 원할 경우 다른 스택 교환 장소도 있습니다. –

답변

1

양식은 등록 POST 방법에 대한 유일한 핸들러가 /promote입니다 그러나 /wishlist의 URL과 함께 핸들러에 게시 노력하고있다.

이러한 것들이 일치해야합니다. 양식 또는 핸들러 맵핑을 변경하십시오.

또한 주소록에있는 동안 app.yaml이 적합한 지 확인하십시오. 당신이 그것에있는 동안 로그를보고, 당신은 어떤 URL이 요청되고 있는지 보게 될 것이다.

+0

아 감사합니다! 나는 부주의했다. 방금 게시/홍보 할 양식을 변경했습니다. 입력 된 데이터는 데이터 저장소에도 성공적으로 저장됩니다. 하지만 '제출'버튼을 클릭하면 빈 페이지가 나타납니다. –

+0

이제 디버깅을해야합니다. 승격 핸들러에 대한 get 메소드에서 일부 로깅을 추가하고 진행 상황을 확인하십시오. 리디렉션이 작동하는지 확인하십시오 ..... –

관련 문제