Using django model/authentication/authorization within Tornado

5407 단어 Authentication
There is a project which is deployed within django. So its authentication system is built from Django itself.
But ususually we want to get good use of it. And we don't want to build another system to manage 'user' information.
 
So, we can use django within tornado. I mean use tornado more.
 
We can build an service application using tornado.
For example, there is a file for tornado which would look like this:
 
It's a hello world tornado app. save it as tornado_service.py
___________________
Hello, world
Here is a simple “Hello, world” example web app for Tornado:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

This example does not use any of Tornado’s asynchronous features; for that see this simple chat room .
 
___________________
 
Make django work within tornado
 
import tornado.ioloop
import tornado.web
import os
# the settings refers to a file settings.py (it's the django main project's settings.py )
# just add the route in the    os.environ[]
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
# now you can use the authenticate lib from django
# the settings could include many setting details such as 'database', 'path', and etc..
from django.contrib.auth import authenticate

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        username = self.get_argument("username")
        password = self.get_argument("password")
        user = authenticate(username= username, password = password)
        if user:
            self.write("hello " + user.username)
        else:
            self.write("Wrong username or password! :(" )
        return

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

 
then run this tornado app:
$ python tornado_service.py

In your web browser, go to http://127.0.0.1:8888/?username=jake&password=anderson
 
If the password matches, then you will get
hello jake

If doesn't, then
Wrong username or password! :(

 
Now you can make django work within torando.
 
Have fun! Happy hacking!
 
 

좋은 웹페이지 즐겨찾기