Oejia 技术栈
首页
应用市场
方案
OE学院
分享
关于
编辑器
登录
Mole详细说明文档
on 2014-12-22
[TOC] ###最简单的示例 ```python @route('/') def index(): return "hello mole!" if __name__ == "__main__": run(host='127.0.0.1', port=8080) ``` 可以看出,mole中讲究的是简洁、直接,不做过多封装,尽量保持Python语言的原生特性 下面是mole中一些重要模块的介绍,由于mole已经在代码上做了比较清晰的模块化,所以建议在需要知道某个模块有哪些 API 的时候直接参看对应的类的源码,类源码和模块的对应关系参照 [附表](#jump) ###模块解析 ####路由器route #####基础路由 ```python @route('/') @route('/index.html') def index(): return '<a href="/hello">Go to Hello World Page</a>' ``` 以装饰器的方式声明url路由,支持多url批量声明 #####动态路由 ```python @route('/hello/:name') def hello(name = 'World'): return 'Hello {}!'.format(name) ``` 简洁的url模式匹配基本满足大部分声明场景 动态路由典型的使用例子——**静态资源路由** ```python @route('/static/:filename') def server_static(filename): return static_file(filename, root='/path/to/your/static/files') ``` 以上即声明了一个web的静态资源url的映射,需要用到js,css等静态资源的站点均可以这样使用 #### HTTP请求(request对象) ##### 请求方法(Request Methods) ```python @route('/test/', method=["GET","POST"]) @dbop def test(): return 'ok' ``` ##### HTTP头 ```python @route('js_ajax') def is_ajax(): if request.header.get('X-Requested-With') == 'XMLHttpRequest': return 'This is an AJAX request' else: return 'This is a normal request' ``` ##### URL参数 ```python @route('/forum') def display_forum(): forum_id = request.GET.get('id') page = request.GET.get('page','1') return 'Forum ID: {} ( Page: {} )'.format(forum_id, page) ``` ##### Form参数 ```python @route('/upload', method = 'POST') def do_upload(): name = request.forms.get('name') data = request.files.get('data') if name and data.file: raw = data.file.read() filename = data.filename return "Hello {}! You uploaded {} ( {} bytes ).".format(name, filename, len(raw)) return "You missed a field" ``` ##### WSGI(请求上下文信息) ```python route('/my_ip') def show_ip(): ip = request.environ.get('REMOTE_ADDR') return 'Your IP is : {}'.format(ip) ``` #### HTTP响应(response对象) #####设置响应头 ```python @route('/wiki/page') def wiki(page): response.set_header('Content-Language', 'en') response.set_header('Set-Cookie','name=value') ``` ##### Cookies ```python @route('/visit') def visit(): if request.get_cookie("visited"): return "Welcome back! Nice to see you again" else: response.set_cookie("visited", "yes") return "Hello there! Nice to meet you" ``` #### 模板(Templates) ```python from mole.template import template @route('/hello/:name'): def hello(name = 'World') return template('hello.tpl', name = name) ``` #### <span id="jump"/>附:源码和模块对应关系 > * route.py ——URL路由 > * request.py ——请求 > * response.py ——响应 > * template.py ——模板引擎 > * cookie.py ——cookie模块 > * sessions.py ——会话 > * server.py ——Web容器适配 > * mole.py ——Mole app整体类(WSGI APP)
Information
Mole详细说明文档
http://www.oejia.net/article/90ec1a25e7658db54e841f6c167c02fb
http://www.oejia.net/raw/90ec1a25e7658db54e841f6c167c02fb
on 2014-12-22
Category
后端HTTP
Tag
Web
Http
Related
2022-05-12 :
Odoo Error Invalid Prop 'apps' in component 'HomeMenu'
2023-01-12 :
Odoo16 SyntaxError
2016-07-18 :
Nginx upstream 配置示例
2022-02-03 :
用 VIM 操作 BOM 标记
2019-01-29 :
Odoo 前端扩展之—增加 html 型字段 widget,用于列表视图显示html内容
2022-02-02 :
Odoo 异步任务队列 task_queue 基于 celery 的使用
2018-10-17 :
Odoo 11 到 Odoo 12 安装的依赖环境变化
2021-05-14 :
Odoo 小程序商城模块 Oejia_weshop v0.2.3 发布,多形式的客户资产及客户分级,多商户供应流程的管理
2014-12-17 :
Python包管理之easy_install
2020-08-05 :
Odoo 短信模块
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (134)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
MoCrud(快速建立关系型数据管理系统)
系统修复和更新记录
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
审批OA
HTML5
OE商城
Markdown
DjangoX
解析
oeshop
PyQT
服系统
YouPBX
Excel
示例
md
markdown
Python
最近发布
OSError [Errno 5] Input/output error 异常处理
Odoo context 的常见使用示例
Odoo 符合国人菜单导航习惯的后台主题,支持最新的Odoo17、16等版本,支持企业版!
Odoo 官方应用市场开启 Odoo17 应用的发布!增加了行业应用专栏
Odoo商城模块 Oejia_weshop v1.2 发布,多商户、分销增强,增加商家端!
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
企业微信错误码 81013 的排查与处理
微信模块 Oejia_wx v0.6.7 发布,支持 Odoo16 及新的Websocket消息模式
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子