python---tornado初识(2)实现登陆和发布文章

# 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">&times;</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">&times;</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>
相关文章
相关标签/搜索