Пост с сервером Торнадо
Я пытаюсь опубликовать на своем веб-сервере Tornado, но продолжаю получать ошибку 405. Не уверен, что происходит. Я довольно новичок в python, но я искал это около месяца и, наконец, решил попробовать.
Веб-Сервер Tornado:
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()
HTML-код:
<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" /> 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>
1 ответов
вам нужно будет изменить LoginHandler, чтобы принять запрос POST.
вот так:
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)