Oejia 技术栈
首页
分享
微信模块
关于
编辑器
登录
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
2020-03-03 :
微信模块——使用说明
2016-01-16 :
示例参考文档
2016-04-20 :
Python 相关
2014-12-22 :
MoCrud(快速建立关系型数据管理系统)
2022-04-26 :
Odoo 低版本升级到 Odoo15 的处理集锦
2018-11-28 :
Unihertz
2017-03-19 :
Log
2016-01-17 :
关于Django框架的ContentType模型
2016-07-28 :
Python 中生成唯一标识的方法
2018-09-13 :
Odoo 小程序商城模块
分类
(23)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (127)
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
客服系统
HTML5
OE商城
审批OA
DjangoX
Markdown
示例
markdown
Python
解析
服系统
oeshop
PyQT
Excel
md
YouPBX
最近发布
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
企业微信错误码 81013 的排查与处理
Odoo商城模块 Oejia_weshop v1.1 发布,支持Odoo16及下单子账号特性
微信模块 Oejia_wx v0.6.7 发布,支持 Odoo16 及新的Websocket消息模式
Odoo16 开启客屏时如何实现在POS设备上自动打开到第二屏
Odoo生产环境需要注意或修改的一些关键配置项
Odoo 更灵活的对账、付款及客户余额的介绍
Odoo16 SyntaxError
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子