2011-10-13 11 views
10

मैं अपने टॉरनाडो वेब सर्वर पर पोस्ट करने की कोशिश कर रहा हूं लेकिन 405 त्रुटि प्राप्त कर रहा हूं। सुनिश्चित नहीं है कि क्या गलत हो रहा है। मैं अजगर के लिए काफी नया हूं लेकिन मैं इस पर एक महीने तक खोज कर रहा हूं और आखिरकार इसे जाने का फैसला किया।टोरनेडो सर्वर पर पोस्ट

तूफान वेब सर्वर:

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 
from tornado.options import define, options 
import os 
import string 
from time import sleep 
from datetime import datetime 
import hashlib 
import json 

from tornado.options import define, options 

define("port", default=8001, help="run on the given port", type=int) 


class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Hello, world") 

class LoginHandler(tornado.web.RequestHandler): 
    def get(self): 
     email_address = self.get_argument('email') 
     password = self.get_argument('password') 
     if email_address == '': 
      login_response = "{'error': true, 'msg': 'Please enter your email address.'}" 
     elif password == '': 
      login_response = "{'error': true, 'msg': 'Please enter your password.'}" 
     else: 
      login_response = "{'error': true, 'msg': 'Thank You.'}" 
      self.response.headers['Content-Type'] = "application/json" 
      self.response.out.write(json.dumps(login_response)) 



def main(): 
    tornado.options.parse_command_line() 
    application = tornado.web.Application([ 
     (r"/", MainHandler), 
     (r"/login", LoginHandler), 
    ]) 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(options.port) 
    tornado.ioloop.IOLoop.instance().start() 


if __name__ == "__main__": 
    main() 

एचटीएमएल:

<form id="login_form" action="http://www.mydomain.com/server/login" method="post"> 
    <label class="grey" for="log">Email Address</label><br /> 
    <input type="text" name="email" style="width:99%" id="email"><br> 
    <label class="grey" for="pwd">Password</label><br /> 
    <input type="password" name="password" style="width:99%" id="password"><br /> 
    <label> 
    <input name="remember" type="checkbox" checked="checked" value="1" /> &nbsp;Remember me</label><br /><br /> 
    <input type="submit" id="loginbtn" name="login" value="LOGIN" class="button"><br /> 
    <a href="forgotpassword.php">Forgot your password?</a> 
    </form> 

उत्तर

23

आप एक पोस्ट अनुरोध को स्वीकार करने के LoginHandler बदलने के लिए होगा।

तो जैसा

:

class LoginHandler(tornado.web.RequestHandler): 
    def post(self): 
     email_address = self.get_argument('email', '') 
     password = self.get_argument('password', '') 

     if not email_address: 
      login_response = { 
       'error': True, 
       'msg': 'Please enter your email address.' 
      } 
     elif not password: 
      login_response = { 
       'error': True, 
       'msg': 'Please enter your password.' 
      } 
     else: 
      login_response = { 
       'error': True, 
       'msg': 'Thank You.' 
      } 

     self.write(login_response) 
+0

जब मैं मैं पोस्ट करने के लिए की तुलना में एक 500 मिलता है इसे बदल: आंतरिक सर्वर त्रुटि – Bobby

+0

@Bobby, उफ़। मैंने वास्तव में इसका परीक्षण नहीं किया था। फिक्स्ड। – daharon

+0

बहुत बहुत धन्यवाद। मुझे यह त्रुटि मिली थी लेकिन यह पता नहीं लगा सका कि क्यों कोई तर्क दर्ज नहीं किया गया था, यह काम नहीं कर रहा था, 'get_argument' में' '' 'को पूरी तरह से भूल गया था – Bobby

संबंधित मुद्दे