# coding:utf8 # __author: Administrator # date: 2018/3/6 0006 # /usr/bin/env python import tornado.ioloop import tornado.web import uimethod as mt import uimodule as md name_list=[] #用户信息 USER_INFO={'login_status':None,'name':None} #文章列表 NEWS_LIST=[ {"title":"dfwafaw","content":"这都是字母"} ] #原来测试模板 class MainHandler(tornado.web.RequestHandler): def get(self): # self.write("Hello World") # 默认当前路径寻找 # print(self.get_argument('name')) # print(self.get_argument('age')) self.render("s1.html",ccc=name_list,nm="mmp") def post(self, *args, **kwargs): name=self.get_argument('xxx') name_list.append(name) self.render("s1.html",ccc=name_list) #显示首页 class HomeHandler(tornado.web.RequestHandler): def get(self): self.render('index.html',user_status=USER_INFO['login_status'],user_name=USER_INFO['name'],content=NEWS_LIST) #传参也能够是字典,在模板按字典使用 #处理登陆和退出 class LoginHandler(tornado.web.RequestHandler): def post(self, *args, **kwargs): name=self.get_argument('username',None) pawd=self.get_argument('password',None)#没法获取时候设为None,防止出错 if name == "ld" and pawd == '123456': USER_INFO['login_status']=True USER_INFO['name']=name self.redirect('/home') def get(self, *args, **kwargs): status=self.get_argument('quit') if status == 'true': USER_INFO['login_status']=False USER_INFO['name']=None self.redirect('/home') #文章发布 class AddNewsHandler(tornado.web.RequestHandler): def post(self, *args, **kwargs): title=self.get_argument('title',None) content=self.get_argument('content',None) if title and USER_INFO['login_status']: NEWS_LIST.append({"title":title,"content":content}) #作一个跳转 self.redirect('home')#是跳转方法,不是页面 st ={ "template_path": "template",#模板路径配置 "static_path":'static', #js css等静态文件路径配置 不管这里配置了什么路径,在静态文件中使用都是用static "static_url_path":'/ss/', #在static_path必须存在的基础上 相似于对其取了一个别名 #如果没有static_url_prefix,则在静态文件中的资源获取为static/s1.css #当存在static_url_prefix时,(前提已经存在static_path),这时具体路径程序已经获取,你只须要在资源前面加上这个前缀,不须要本身去写具体url #就是能够看作为static_path起了一个别名 #static_url_prefix了解便可,不经常使用 'ui_methods':mt, #自定义函数在模板中使用{{}} 'ui_modules':md, #自定义类在模板中使用{% %} } #路由映射 匹配执行,不然404 application = tornado.web.Application([ (r"/index",MainHandler), (r"/home",HomeHandler), (r"/login",LoginHandler), (r"/addNews",AddNewsHandler), ],**st) if __name__=="__main__": application.listen(8080) #io多路复用 tornado.ioloop.IOLoop.instance().start()
模板文件css
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--<link rel="stylesheet" href="static/plugins/bootstrap3/css/bootstrap.css">--> <!--<script src="static/js/jquery.js"></script>--> <!--<script src="static/plugins/bootstrap3/js/bootstrap.js"></script>--> <!--注意要想在模板文件中使用static_url必须定义static_url_prex或者static_url_path,二者相似--> <link rel="stylesheet" href="{{static_url('plugins/bootstrap3/css/bootstrap.css')}}}"> <link rel="stylesheet" href="{{static_url('css/index.css')}}"> <script src='{{static_url("js/jquery.js")}}'></script > <script src="{{static_url('plugins/bootstrap3/js/bootstrap.js')}}"></script> </head> <body> <div> {% if user_status %} <h1>你好:{{user_name}}<a onclick="PostNews();">发布消息</a><div style="float: right;"><a href="/login?quit=true">退出</a></div></h1> {% else %} <h1>请先<a onclick="Login();">登陆</a></h1> {% end %} </div> <div class="content-list"> {% for item in content %} <div class="item"> <div class="title">{{item['title']}}</div> <div class="content">{{item['content']}}</div> </div> {% end %} </div> <div class="modal fade" id="login" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <form action="login" method="post"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="exampleModalLabel">用户登陆</h4> </div> <div class="modal-body"> <div class="form-group"> <label class="control-label">用户名:</label> <input type="text" class="form-control" name="username"> </div> <div class="form-group"> <label class="control-label">密码:</label> <input type="password" class="form-control" name="password"> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="submit" class="btn btn-primary">Submit</button> </div> </form> </div> </div> </div> <div class="modal fade" id="pub" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <form action="addNews" method="post"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="exampleModalLabel">用户登陆</h4> </div> <div class="modal-body"> <div class="form-group"> <label class="control-label">标题:</label> <input type="text" class="form-control" name="title"> </div> <div class="form-group"> <label class="control-label">内容:</label> <textarea class="form-control" name="content" id="message-text"></textarea> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="submit" class="btn btn-primary">Submit</button> </div> </form> </div> </div> </div> </body> </html> <script> function Login(){ $("#login").modal('show'); } function PostNews(){ $("#pub").modal('show'); } </script>