使用python + tornado 做项目demo演示模板

时间:2023-01-26 23:20:26

很简单,可是却也折腾了不是时间,走了不少弯路。在此备注记录一下,以供后需。

# web_server.py

#!/usr/bin/env python
# coding=utf-8 import os.path
import tornado.httpserver
import tornado.options
import tornado.web
from auto_gen_jd import AutoGenJD
from jd_parser import JdParser
from tornado.options import define,options
import sys
reload(sys)
sys.setdefaultencoding('utf-8') define("port",default = 8086,help="run on the given port",type=int) class IndexHandler(tornado.web.RequestHandler):
def get(self):
result = self.get_argument("result",[])
num = self.get_argument("num",5)
source_text = self.get_argument("source","")
self.render("inputgen.html",source = source_text,result = result,num=num) def post(self):
result = self.get_argument("result",[])
source_text = self.get_argument("source","")
num = self.get_argument("num",5).encode("utf-8")
result = genjd.get_jd_with_kmeans(source_text,num)
self.render("outputgen.html",source = source_text,result = result,num=num) class GenJdHandler(tornado.web.RequestHandler):
def get(self):
result = self.get_argument("result",[])
num = self.get_argument("num",5)
source_text = self.get_argument("source","")
self.render("inputgen.html",source = source_text,result = result,num=num) def post(self):
result = self.get_argument("result",[])
source_text = self.get_argument("source","")
num = self.get_argument("num",5).encode("utf-8")
result = genjd.get_jd_with_kmeans(source_text,num)
self.render("outputgen.html",source = source_text,result = result,num=num) class JdParserHandler(tornado.web.RequestHandler):
def get(self):
result = self.get_argument("result",[])
source_text = self.get_argument("source","")
self.render("inputjd.html",source=source_text,result=result) def post(self):
source_text = self.get_argument("source","")
result = extr.split_multi_jd(source_text)
self.render("outputjd.html",source=source_text,result=result) if __name__ == "__main__": genjd = AutoGenJD()
extr = JdParser()
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers = [(r'/',IndexHandler),(r'/genjd',GenJdHandler),(r'/jdparser',JdParserHandler)],
template_path = os.path.join(os.path.dirname(__file__),"templates"),
debug=True,
autoescape=None,
)
print "starting tornado..."
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

模板文件,共有四个,大体雷同:

outputjd.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" >
<title>技能在线抽取</title>
<link rel = "stylesheet" href="http://cdn.amazeui.org/amazeui/2.4.0/css/amazeui.min.css">
<link rel = "icon" href="head.ico" > <script>
function get_result(){
document.getElementById("res_hint").innerHTML='<div class="am-active">'+'解析结果:'+'</div>';
return true
}
</script>
</head>
<body>
{% autoescape None %}
<div class="am-topbar">
<h1 class="am-active">在线演示</h1>
</div>
<div class="am-g">
<div class="am-u-sm-7 am-u-sm-centered">
<div class="am-intro-left am-active" style="height:80px">
<label ><em>使用说明</em></label>
<p class="am-serif">粘贴企业招聘信息到文本框,再点击提交,可获得jd解析结果。<a href="/genjd" title="自动生成JD">自动生成JD</a></p><br />
</div>
<form class="am-form am-form-horizontal" role="form" action="/jdparser" method="post" onsubmit="return get_result()">
<textarea class="am-form-field am-radius" name="source" rows="" cols="" placeholder="input job description here" autofocus="True" >{{source}}</textarea>
<div class="am-u-sm-centered" style="text-align:center">
<button type="submit" onclick="get_result()" class="am-btn am-btn-primary" value="提交">submit</button>
</div>
</form>
</div>
<br />
<div class="am-u-sm-6 am-u-sm-centered">
<div id='res_hint'></div>
<div id="result">
{% for i,jd in enumerate(result,1) %}
<br /> jd #{{ i }}==================== <br />
{%
set hint = {'sex':'年龄','cert':"证书","pay":"薪酬","job_tag":"职业标注","inc_tag":"公司标注","inc_name":"公司标注","demand":"工作要求","duty":"工作内容","benefits":"福利待遇","other":"其它未处理的句子","pub_time":"发布时间","end_time":"截止时间"}
%}
<ul>
{% for k,v in jd.iteritems() %}
{% if k=="demand" or k=="duty" or k=="benefits" or k=="other" %}
<li title={{hint[k]}}>{{k}}: <pre>{{ v }} </pre></li>
{% else %}
<li title={{k}}>{{k}} :<pre/> {%raw v %}</pre></li>
{% end %}{% end %}{% end %}
</ul>
</div>
<script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.4.0/js/amazeui.min.js"</script>
</body>
</html>

outputgen.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" >
<title>自动生成JD</title>
<link rel = "stylesheet" href="http://cdn.amazeui.org/amazeui/2.4.0/css/amazeui.min.css">
<link rel = "icon" href="head.ico" > <script>
function get_result(){ document.getElementById("res_hint").innerHTML='<p class="am-active">正在生成结果,请稍等...'+'<i class="am-icon-spinner am-icon-spin"></i></p>';
document.getElementById("res_hint").style.color="#c60a00";
num = document.getElementById("num").value;
jobname = document.getElementById("jobname").value;
return true
}
</script>
</head>
<body>
<div class="am-topbar">
<h1 class="am-active">在线演示</h1>
</div>
<div class="am-g">
<div class="am-u-sm-6 am-u-sm-centered">
<div class="am-intro-left" style="height:180px">
<label class="am-active"><em>使用说明</em></label>
<p class="am-serif">输入职位名和所需生成jd句子数,再点击提交,可获得jd结果。</p><br />
</div>
<form class="am-form-inline" role="form" action="/genjd" method="post" onsubmit="return get_result()">
<input id="jobname" class="am-form-field am-radius" type="text" name="source" style="width:500px" placeholder="input jobname here" autofocus="True" value={{source}}></input>
<input id="num" class="am-form-field am-round" type="number" min="" max="" name="num" title="input number of sententces" value={{num}}></input>
<button type="submit" onclick="get_result()" class="am-btn am-btn-primary" value="提交">submit</button>
</form>
</div>
<br />
<div class="am-u-sm-6 am-u-sm-centered">
<div id='res_hint' class="am-active">生成结果: <a href="/jdparser" title="jd解析">JD解析</a></div>
<div id="result" style="background-color:#f8f8f8">
<ul >
{% for i,s in enumerate(result) %}
<li>{{i+1}}. {{s}} </li>
{%end%}
</ul>
</div>
<script type="text/javascript" src="http://cdn.amazeui.org/amazeui/2.4.0/js/amazeui.min.js"></script>
</body>
</html>

使用python + tornado 做项目demo演示模板的更多相关文章

  1. Python之Flask框架项目Demo入门

    Python+Flask框架项目Demo入门 本例子用到了 Flask+蓝图+Flask-Login+SQLAlchemy+WTForms+PyMySQL相关架构 Flask Web框架介绍 Flas ...

  2. ASP&period;NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  3. Python Tornado初学笔记之表单与模板(一)

    Tornado中的表单和HTML5中的表单具有相同的用途,同样是用于内容的填写.只是不同的是Tornado中的表单需要传入到后台,然后通过后台进行对模板填充. 模板:是一个允许嵌入Python代码片段 ...

  4. 项目一&colon;第十一天 2、运单waybill快速录入 3、权限demo演示-了解 5、权限模块数据模型 6、基于shiro实现用户认证-登录(重点)

    1. easyui DataGrid行编辑功能 2. 运单waybill快速录入 3. 权限demo演示-了解 4. Apache shiro安全框架概述 5. 权限模块数据模型 6. 基于shiro ...

  5. Tornado实战项目&lpar;伪JD商城&rpar;

    预备知识 在之前tornado商城项目中,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性, 降低数据之间的耦合性,提高稳定性,下 ...

  6. python flask 小项目

    0 开始之前 网上看了很多教程,都不是很满意,因此自己写一个大型教程,从入门到做出一个比较完整的博客.此次教程不是直接把整个博客直接代码整理出来然后运行一遍就完事,我会从flask的各个模块讲起.所以 ...

  7. Python&plus;Tornado开发微信公众号

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本教程针对的是已掌握Pyt ...

  8. 70个Python练手项目列表(都有完整教程)

    前言: 不管学习那门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从 ...

  9. Python &amp&semi; 机器学习之项目实践

    机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能 ...

随机推荐

  1. 《Inside UE4》目录

    <Inside UE4>目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸 ...

  2. wicket基础应用&lpar;3&rpar;——wicket控件的隐藏和显示

    在一个项目,页面经常要显示和隐藏一些控件,用wicket来控制显示和隐藏控件相当的方便. 1.最简单的隐藏和显示方法: wicket的控件大部分都有setVisible(...)方法,用这个方法就可以 ...

  3. css解决方案经验杂记

    文本垂直居中 单行文本:line-height的值等于height: 多行文本:padding上下值一致即可: 还可以使用position:absolute进行绝对定位,如果是相对父级元素,则需要设置 ...

  4. failed to lazily initialize a collection of role

    可能修复了一个重大的偶尔发生的几乎难以察觉的并且到现在我也没能理解的bug...有时(经常)调用updateNotNullfield方法(原理是从数据库中get一个对象,然后把原对象中非空的值赋予它, ...

  5. UVa 10837 A Research Problem 欧拉函数

    题意: 给你一个欧拉函数值 phi(n),问最小的n是多少. phi(n) <= 100000000 , n <= 200000000 解题思路: 对于欧拉函数值可以写成 这里的k有可能是 ...

  6. MySQL性能调优与架构设计读书笔记

    可扩展性设计之数据切分 14.2 数据的垂直切分 如何切分,切分到什么样的程度,是一个比较考验人的难题.只能在实际的应用场景中通过平衡各方面的成本和利益,才能分析出一个真正适合自己的拆分方案. 14. ...

  7. JQuery EasyUI框架学习

    前言 新项目的开发前端技术打算採用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,须要我这菜鸟对EasyUI框架进行一些基础的 ...

  8. Python自学笔记-filter&lpar;&rpar;函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...

  9. win10 uwp 打包第三方字体到应用

    有时候我们会把一些特殊字体打包到软件,因为如果找不到我们的字体会变为默认,现在很多字体图标我们用得好,有时候我们的应用会用很漂亮的字体,需要我们自己打包,因为用户一般是没有字体. UWP使用第三方字体 ...

  10. 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

    Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件. 用户权限通过创建用户时分配的用户ID(UID)来跟踪的.每个用户有唯一的ID,但是登录时用的不是UID, ...