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-02-03 :
Git The text is identical , but the files do not match !
2016-11-21 :
DjangoX 站点级配置介绍
2020-01-06 :
Odoo客服系统之小程序客服消息使用说明
2016-02-01 :
便签与计划
2020-07-14 :
Odoo在部分手机浏览器访问时报“未知的CORS错误”的解决办法
2019-09-30 :
微信模块 Oejia_wx v0.5.9 发布,系列视图及对接优化,增加Odoo13支持
2014-12-15 :
Cordova设置应用图标icon和启动页面SplashScreen
2016-02-25 :
待整理
2017-11-02 :
巧用 Odoo act_window 的 flags实现一些个性化的视图控制
2016-01-17 :
关于Django框架的ContentType模型
官方订阅号
关注订阅实时了解我们更多分享
分类
(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
MoSys详细说明文档
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架子