当前位置: 首页 > news >正文

上海软件开发培训医疗网站seo怎么做

上海软件开发培训,医疗网站seo怎么做,南宁360网,如何做一个网页项目1.TornadoTornado#xff1a;python编写的web服务器兼web应用框架1.1.Tornado的优势轻量级web框架异步非阻塞IO处理方式出色的抗负载能力优异的处理性能#xff0c;不依赖多进程/多线程#xff0c;一定程度上解决C10K问题WSGI全栈替代产品#xff0c;推荐同时使用其web框架…1.TornadoTornadopython编写的web服务器兼web应用框架1.1.Tornado的优势轻量级web框架异步非阻塞IO处理方式出色的抗负载能力优异的处理性能不依赖多进程/多线程一定程度上解决C10K问题WSGI全栈替代产品推荐同时使用其web框架和HTTP服务器1.2.Tornado VS DjangoDjango重量级web框架功能大而全注重高效开发 内置管理后台内置封装完善的ORM操作session功能后台管理缺陷高耦合Tornado轻量级web框架功能少而精注重性能优越 HTTP服务器异步编程WebSocket缺陷入门门槛较高2.安装输入命令pip install tornado备注 Tornado应该运行在类Unix平台为了达到最佳的性能和扩展性仅推荐Linux和BSD(充分利用Linux的epoll工具和BSD的kqueue达到高性能处理的目的)3.使用3.1.Tornado入门程序 - 一#-*- coding:utf-8 -*- import tornado.web import tornado.ioloop#定义处理类型 class IndexHandler(tornado.web.RequestHandler):#添加一个处理get请求方式的方法def get(self):#向响应中添加数据self.write(好看的皮囊千篇一律有趣的灵魂万里挑一。)if __name__ __main__:#创建一个应用对象app tornado.web.Application([(r/,IndexHandler)])#绑定一个监听端口app.listen(8888)#启动web程序开始监听端口的连接tornado.ioloop.IOLoop.current().start()1 .在pycharm中直接运行代码 2 .如果是在ubuntu在命令窗口输入 python 文件名.py4.Tornado 代码解析4.1.入门程序代码解析tornado.webtornado的基础web框架RequestHandler封装对请求处理的所有信息和处理方法get/post/..封装对应的请求方式write()封装响应信息写响应信息的一个方法tornado.ioloop核心io循环模块封装linux的epoll和BSD的kqueue tornado高性能处理的核心。current()返回当前线程的IOLoop实例对象start()启动IOLoop实力对象的IO循环开启监听4.2.httpserver底层处理httpserver监听端口tornado.httpserver.HTTPServer(app) httpserver.listen(port)httpserver实现多进程操作tornado.httpserver.HTTPServer(app) httpserver.bind(port) httpserver.start(0/None/0/num) # -*- coding:utf-8 -*- from tornado.web import Application,RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServerclass IndexHandler(RequestHandler):def get(self):self.write(给自己一点时间理清所有的荒唐与期望。)if __name__ __main__:app Application([(r/,IndexHandler)])http_server HTTPServer(app)#最原始的方式http_server.bind(8888)http_server.start(1)#启动Ioloop轮循监听IOLoop.current().start()4.3.options配置全局配置tornado.options.define(name, default, type, multiple, help )命令行参数转换tornado.options.parse_command_line() #-*- coding:utf-8 -*-from tornado.web import RequestHandler,Application from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer import tornado.options#定义变量 tornado.options.define(port,default8000,typeint,helpthis is the port for application)class IndexHandler(RequestHandler):def get(self):self.write(我们既然改变不了规则那就做到最好)if __name__ __main__:app Application([(r/,IndexHandler)])tornado.options.parse_command_line()http_server HTTPServer(app)http_server.bind(tornado.options.options.port)http_server.start(1)#启动IOLoop轮循监听IOLoop.current().start()配置文件#即在当前py文件目录创建config文件并在py代码中加入以下代码 tornado.options.parse_config_file(./config)配置模块跟配置文件类似4.4.application配置程序调试之debug配置#自动重启取消缓存模板取消缓存静态文件提供追踪信息 tornado.web.Application([(..)], debugTrue)注开发之初可以设置debugTrue方便调试开发完毕改为False.路由信息初始化参数配置tonado.web.Application([(r””, Handler, {k:v})]) def initialize(self, k)路由名称设置及反解析#名称设置 tornado.web.Application([url(r””, handler, {k,v}, name“”) ])#反解析操作 reverse_url(name)实例# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler, url from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServerclass IndexHandler(RequestHandler):def get(self):self.write(a hrefself.reverse_url(login)用户登录/a)class RegistHandler(RequestHandler):def initialize(self, title):self.title titledef get(self):self.write(注册业务处理: str(self.title))class LoginHandler(RequestHandler):def get(self):self.write(用户登录页面展示)def post(self):self.write(用户登录功能处理)if __name__ __main__:app Application([(r/, IndexHandler),(r/regist, RegistHandler, {title: 会员注册}),url(r/login, LoginHandler, namelogin),])http_server HTTPServer(app)http_server.listen(8000)IOLoop.current().start()4.5.参数传递get方式传递参数get_query_arguments(name,default_ARG_DEFAULT,stripTrue) get_query_argument(name ,stripTrue)post方式传递参数get_body_arguments(name, default_ARG_DEFAULT,stripTrue) get_body_argument(name ,stripTrue)实例# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServerclass IndexHandler(RequestHandler):def get(self):# 获取get方式传递的参数username self.get_query_argument(username)usernames self.get_query_arguments(username)print (username)print (usernames)def post(self):# 获取post方式传递的参数username self.get_body_argument(username)usernames self.get_body_arguments(username)print (username)print (usernames)if __name__ __main__:app Application([(r/,IndexHandler)])app.listen(8000)IOLoop.current().start()#网页运行时需要传入参数 #192.168.11.79:8000/?username123混合方式get_arguments(..)/get_argument(..)实例# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoopclass IndexHandler(RequestHandler):def get(self):# 获取get方式的参数user self.get_argument(user)print(get方式获取参数 str(user))def post(self):# 获取post方式的参数user self.get_argument(user)print(post方式获取参数 user.encode(utf-8))if __name__ __main__:app Application([(r/, IndexHandler)])app.listen(8000)IOLoop.current().start()其他参数通过request获取参数数据 method/host/uri/path/query/version/headers/body/remote_ip/files实例 - request/json# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoopclass IndexHandler(RequestHandler):def get(self):print self.requestjson_str {username: admin, password: 123123}self.write(json.dumps(json_str))if __name__ __main__:app Application([(r/, IndexHandler)])app.listen(8000)IOLoop.current().start()header .add_header() .set_header() .set_default_headers()设置响应HTTP头, 前两者的不同点在于多次设置同一个项时, .add_header()会叠加参数, 而.set_header()则以最后一次为准..set_default_headers()比较特殊, 是一个空方法, 可根据需要重写, 作用是在每次请求初始化RequestHandler时设置默认headers..clear_header() .clear().clear_header()清除指定的headers, 而.clear()清除.set_default_headers()以外所有的headers设置.# add_header self.add_header(Foo, one) self.add_header(Foo, two) # set_header self.set_header(Bar, one) self.set_header(Bar, two)# HTTP头的设置结果 # Foo → one, two # Bar → two# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoopclass IndexHandler(RequestHandler):def set_default_headers(self):# 第二种响应头设置方式print(--------- 响应头set_default_headers()执行)self.set_header(Content-type, application/json; charsetutf-8)self.set_header(qiku, 奇酷信息)def get(self):# 第一种操作响应头的方式# self.set_header(Content-type, application/json)print(----------get方法执行)self.write({name:jerry})self.set_header(qiku, qikuedu.com)if __name__ __main__:app Application([(r/, IndexHandler)])app.listen(8000)IOLoop.current().start()writerror.send_error()用于发送HTTP错误页(状态码). 该操作会调用.clear() .set_status().write_error()用于清除headers, 设置状态码, 发送错误页. 重写.write_error()可以自定义错误页.# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoopclass IndexHandler(RequestHandler):def get(self):self.write(hello qikuedu.com)self.send_error(404, msg页面丢失, info家里服务器搞对象去了)def write_error(self, status_code, **kwargs):self.write(h1出错啦工程师MM正在赶来的途中.../h1)self.write(p错误信息:%s/p % kwargs[msg])self.write(p错误描述:%s/p % kwargs[info])if __name__ __main__:app Application([(r/, IndexHandler)])app.listen(8000)IOLoop.current().start()数据流.write() 将数据写入输出缓冲区. 如果直接传入dict, 那Tornado会自动将其识别为json, 并把Content-Type设置为application/json, 如果你不想要这个Content-Type, 那么在.write()之后, 调用.set_header()重新设置就好了. 需要注意的是, 如果直接传入的是list, 考虑到安全问题(json数组会被认为是一段可执行的JavaScript脚本, 且script src*/secret.json可以绕过跨站限制),list将不会被转换成json..flush() 将输出缓冲区的数据写入socket. 如果设置了callback, 会在完成数据写入后回调. 需要注意的是, 同一时间只能有一个等待的flush callback, 如果上一次的flush callback还没执行, 又来了新的flush, 那么上一次的flush callback会被忽略掉..finish() 完成响应, 结束本次请求. 通常情况下, 请求会在return时自动调用.finish(), 只有在使用了异步装饰器asynchronous或其他将._auto_finish设置为False的操作, 才需要手动调用.finish(). cookie# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoopclass IndexHandler(RequestHandler):def get(self):self.write(hello qikuedu.com)self.set_cookie(loginuser, admin老王)print self.get_cookie(loginuser)print self.cookiesif __name__ __main__:app Application([(r/, IndexHandler)])app.listen(8000)IOLoop.current().start()页面.render() 返回渲染完成的html. 调用后不能再进行输出操作..redirect() 重定向, 可以指定3xx重定向状态码. 调用后不能再进行输出操作.# 临时重定向 301 self.redirect(/foo) # 永久重定向 302 self.redirect(/foo, permanentTrue) # 指定状态码, 会忽略参数 permanent self.redirect(/foo, status304)redirect# -*- coding:utf-8 -*-from tornado.web import Application, RequestHandler, url from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServerclass IndexHandler(RequestHandler):def get(self):self.write(a hrefself.reverse_url(login)用户登录/a)class RegistHandler(RequestHandler):def initialize(self, title):self.title titledef get(self):self.write(注册业务处理: str(self.title))class LoginHandler(RequestHandler):def get(self):self.write(用户登录页面展示)def post(self):self.write(用户登录功能处理)if __name__ __main__:app Application([(r/, IndexHandler),(r/regist, RegistHandler, {title: 会员注册}),url(r/login, LoginHandler, namelogin),])http_server HTTPServer(app)http_server.listen(8000)IOLoop.current().start()
http://www.zqtcl.cn/news/754326/

相关文章:

  • 晓风彩票网站建设软件微信上发的链接网站怎么做的
  • 关键词有哪几种台州优秀关键词优化
  • 盐田区住房和建设局网站软件开发文档怎么编写
  • 网站响应式建设seo排名优化怎样
  • 山东 网站备案德清县建设局网站
  • 中英语双语网站咋做提供网站建设设计外包
  • 云网站功能江门网站seo关键词排名优化
  • 潍坊网站建设外贸制作html网站
  • 网站友情链接怎么添加定制酒营销方案
  • 目前最流行网站开发软件泰州市建设工程招标网
  • 福州网站优化me域名网站
  • 网站 案例互联网外包公司值得去吗
  • 做医疗护具网站浙江立鹏建设有限公司网站
  • 织梦制作手机网站c 网站开发需要学什么软件
  • 罗湖网站制作阿里巴巴开店网站怎么做
  • 深圳住房和建设局网站 招标怎样建设自己的视频网站
  • 网站建设的目的模板茶网站建设需要多少钱
  • 珠海市城乡住房建设局网站网站外链
  • 福田做网站需要多少钱做淘宝客网站性质
  • html网站怎么进入后台网站主题怎么写
  • wordpress怎么ftp建站高端网站建设域名注册
  • 我用织梦5.7做个网站应该把淘宝客店铺链接放到哪聊天软件开发需要多少钱
  • 站长工具爱站竞价单页网站制作
  • 网站分类目录大全购物网站大全棉鞋
  • 网站镜像做排名建立外贸英文网站应该怎么做
  • 上海做网站就用乐云seo手机网站cms 下载
  • 做网站需要固定ip么灵犀科技网站建设
  • 深圳高端做网站建设网站备案与不备案区别
  • 家居企业网站建设公司苏州高新区建设局网站管网
  • 体育门户网站模板seo网络推广有哪些