0

私はpythonが初めてで、データベースからデータをフェッチするコードを作成しようとしています.Oracleはユーザーが登録されているかどうかを確認しています.このコードはWebアプリケーション用ですが、403:Forbiddenエラーが発生しています.コードに問題があるかどうかを特定できませんまたは、さらに構成が必要です。私はWindows 7で作業しています。


      import logging
      import tornado.escape
      import tornado.ioloop
      import tornado.options
      import tornado.web
      import tornado.websocket
      import os.path
      import uuid
      import time
      import cx_Oracle

      from tornado.options import define, options

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


      class Application(tornado.web.Application):
        def __init__(self):
            handlers = [(r"/", MainHandler),(r"/loggedin/page", UserIndex),]
            settings = dict(
            cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__",
            template_path=os.path.join(os.path.dirname(__file__), "templates"),
            static_path=os.path.join(os.path.dirname(__file__), "static"),
             xsrf_cookies=True,
              autoescape=None,
               )
            tornado.web.Application.__init__(self, handlers, **settings)


        class MainHandler(tornado.web.RequestHandler):
          def get(self):
             self.render("mainPage.html")

        class UserIndex(tornado.web.RequestHandler):
           def post(self):
               userid=self.get_argument('userid')
               pwd=self.get_argument('pwd')
               con=cx_Oracle.connect('system','system','localhost:1521/XE')
               c=con.cursor()
               coun=c.execute("select count(*) from dmsuser where email= '%s' and pwd                          ='%s'" %(userid,pwd))
             con.close()
              if coun.fetchone()==(1,):
                 self.render('loggedinPage.html')
              else:
                 self.render('mainPage.html')   

       def main():
         tornado.options.parse_command_line()
         app = Application()
         app.listen(options.port)
         tornado.ioloop.IOLoop.instance().start()


    if __name__ == "__main__":
        main()
4

1 に答える 1

1

テンプレートがないとわかりませんが、POST リクエストに XSRF データが含まれていないと思います。アプリ構成で設定xsrf_cookies=Trueしたので、フォーム テンプレートに xsrf データを含める必要があります。

<form method="post" action="...">
  {% module xsrf_form_html() %}
  ...
</form>
于 2012-12-27T03:16:04.750 に答える