2017-02-17 2 views
1

양식에서 데이터를 게시하고 webapp2로 처리하는 데 약간의 문제가 있습니다.webapp2 - 양식 데이터 게시 방법 - 앱 엔진

양식 작업으로 데이터를 게시 할 페이지를 비롯하여 일반적으로 webapp2의 양식에서 데이터를 처리하는 방법을 잘 모르겠습니다.

내 양식은 '/ schedule/create-consult'페이지에 있습니다. 처음에는 처음 두 필드를 같은 페이지 (즉,/schedule/create-consults에 게시되는 이름과 성)에 제출하는 테스트를하고 있습니다. - 메소드 POST가이 자원에 대해 허용되지 않습니다

405 메소드가 허용되지 않음 : 나는이 메시지가 저장 버튼을 클릭하면

내 양식이

<form method="post" action="/schedule/create-consult"> 
    <div class="row"> 
     <div class="col-md-6"> 
      <label>First Name</label> 
      <input class="form-control input-lg" type="text" name="first_name" /> 
      <br/> 
     </div> 
     <div class="col-md-6"> 
      <label>Last Name</label> 
      <input class="form-control input-lg" type="text" name="last_name" /> 
     </div> 
     <input type="submit" value="save"> 
    </div> 
</form> 

것 같습니다.

내 노선과 같이이

app = webapp2.WSGIApplication([ 
    ('/', MainPage), 
    ('/schedule', SchedulePage), 
    ('/consults', ConsultsPage), 
    ('/schedule/create-consult', CreateConsultPage), 
    ('/consults/john-smith-030617-0930', JohnSmithPage) 
], debug=True) 

CreateConsultsPage에 대한 나의 핸들러는이

class CreateConsultPage(webapp2.RequestHandler): 
    def get(self): 
    template = JINJA_ENVIRONMENT.get_template('/templates/create-consult.html') 
    self.response.out.write(template.render()) 

처럼 보인다 그리고 내 애플리케이션 제목은 다음과 같다 : 그것은하려고

runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /css 
    static_dir: css 
- url: /images 
    static_dir: images 
- url: /js 
    static_dir: js 
- url:/
    script: main.app 
- url: /schedule 
    script: main.app 
- url: /consults 
    script: main.app 
- url: /schedule/create-consult 
    script: main.app 
- url: /consults/john-smith-030617-0930 
    script: main.app 

libraries: 
- name: webapp2 
    version: latest 
- name: jinja2 
    version: latest 
+0

의 사용 가능한 복제 ([메소드 POST 허용되지 405 방법이 자원에서 appengine 페이스 북 앱 허용되지 않습니다] http://stackoverflow.com/questions/13346309/405-method-not-allowed-the- 메소드 - post-is-not-for-this-resource-appengin) –

+0

def get (self)와 다음 행 사이에 들여 쓰기가 있어야합니다 –

답변

2

당신은 포스트 방법을 사용하여 양식을 제출한다. 제출 된 양식 데이터를 얻으려면 처리기 클래스에서 post 함수를 정의해야합니다. 이렇게하면 문제가 해결됩니다.

class CreateConsultPage(webapp2.RequestHandler): 
    def get(self): 
     template = JINJA_ENVIRONMENT.get_template('/templates/create-consult.html') 
     self.response.out.write(template.render()) 

    def post(self): 
     first_name = self.request.get('first_name') 
     last_name = self.request.get('last_name') 
1

앱에 POST를 수행하지만 핸들러를 수신하도록 구성되지 않았습니다. 당신이 당신의 GET 핸들러가

:

class CreateConsultPage(webapp2.RequestHandler): 
    def get(self): 
     dostuf 

당신은 또한뿐만 아니라 POST의 투수가 필요 :

class CreateConsultPage(webapp2.RequestHandler): 
    def post(self): 
     dostuff