建材加盟网
web.py网络框
时间:2017-04-28 06:14:32 来源:建材加盟网

篇一:Webpy

Web.py Cookbook 简体中文版

欢迎来到web.py 0.3的Cookbook。提醒您注意:某些特性在之前的版本中并不可用。当前开发版本是0.3。

格式

1. 在编排内容时,请尽量使用cookbook格式...如:

问题:如何访问数据库中的数据?

解法:使用如下代码...

2. 请注意,网址中不必含有"web"。如"/cookbook/select",而非"/cookbook/web.select"。

3. 该手册适用于0.3版本,所以您在添加代码时,请确认代码能在新版本中工作。

基本应用:

? ? ?

? ? ?

?

高级应用

? ? ? ? ? ? ? ? Sessions and user state 会话和用户状态:

? ? ? ? ? ? ?

Utils 实用工具:

? ?

?

Templates 模板

? ? ? ? ? ? ? ? ? Testing 测试:

? ?

User input 用户输入:

? ? ? ?

? ?

Database 数据库

? ? ? ? ? ? ? ? ? ?

Deployment 部署:

mod_python deployment through Apache (requested)

? ? ? ? ? ? ?

Subdomains 子域名:

? Subdomains and how to access the username (requested) Hello World!

问题

如何用web.py实现Hello World!?

解法

URL开头添加代码:

然后用redirect类处理以'/'结尾的网址:

篇二:webpy学习笔记——CSS不能渲染网页

webpy学习笔记:web.py下,CSS文件不能渲染(Chrome),启动很慢问题

问题描述:

打开localhost:8080,Chrome下,CSS不能渲染网页(没起作用),但js动态效果生效,而且img也调出来了;IE下,网页正常显示,CSS可以正常渲染网页。另,无论chrome还是IE,打开网页都很慢,每次都是 10s左右

系统说明:

1python 2.5.4,web.py 0.37

2.文件夹架构如下:

3.myweb.py里面调用模板indexV1.html

4.indexV1.html里面有大量的css,js,img文件引用,路径格式如下:

5.css,js,img等静态文件放置在static文件夹里(如路径所示)

6.服务器为webpy内建服务器

解决方案:

1.python版本问题,将其升级到python 2.7.3,web.py还是0.37,上述问题全消失:Chrome打开网页正常,且速度很快;IE打开 网页正常,但速度还是要10s左右,可能是IE机制问题。终于解决,哈哈!

篇三:Odoo的网页模块QWEB简述

Odoo/OpenERP的网页模块QWEB简述

1.web模块

注意,OpenERP模块中web部分用到的所有文件必须被放置在模块内的static文件夹里。这是强制性的,出于安全考虑。

事实上,我们创建的文件夹CSS,JS和XML,仅仅是一个习惯。

static文件夹

oepetstore/static/css/petstore.css是我们的CSS文件。

oepetstore/static/xml/petstore.xml是一个XML文件,将包含我们QWeb的模板。

oepetstore/static/js/petstore.js包含应用程序的JavaScript代码。

像OpenERP的XML文件包含了视图或数据一样,必须在__openerp__.py文件内标明这些文件。下面是我们增加的行,它告诉web client必须记载这些文件:

'js':['static/src/js/*.js'],

'css':['static/src/css/*.css'],

'qweb':['static/src/xml/*.xml'],

OpenERP内,默认会把所有的JavaScript文件连接为一个文件。然后,我们执行一个叫minification的操作。

minification将移除文件中的所有的注释、空格和换行符。最后,发送这个文件给用户浏览器。

但这么做的缺点,是无法调试应用程序。为了避免这种副作用,仍然能够调试的解决办法是:在OpenERP的URL后面添加一个参数?debug.

添加后的URL:http://localhost:8069/?debug

当您使用带debug参数的URL,应用程序将不会执行串联所有minification的JavaScript文件这个过程。应用程序也将需要更多的时间来加载,但你能进

行调试开发了。

在前面的章节中,我们解释了JavaScript缺少命名空间机制,来分割在不同的JavaScript文件中声明的变量。并且我们提出了模块模式这个简单方法。

模块模式(如app.js文件):

(function(){

app={};

function main(){

console.log("launch application");

};

app.main=main;

})();

在OpenERP的web框架内,有个类似于模块模式的等价物,集成了该框架的其余部分。请注意,OpenERP的Web模块与其他OpenERP的addon模块概念上是不同的,一个addon模块是一个包含很多文件的文件夹,web模块仅仅是一个有命名空间概念的JavaScript。

1)模块

oepetstore/static/js/petstore.js声明了这样的模块:

openerp.oepetstore=function(instance){

instance.oepetstore={};

instance.oepetstore.XXX=......;

}

在OpenERP的Web框架内,通过声明一个函数来声明一个JavaScript模块,并把这个函数放在全局变量openerp的属性内.这个属性名称必须和OpenERP addon模块名称一致(这addon模块名为

oepetstore,我应把函数赋值给openerp.oepetstore属性。如果换成openerp.petstore属性,则无法正常运行)。当Web客户端转载这个addon模块时,该函数将被调用。将传入一个名为instance的参数,这个参数代表当前OpenERP的Web客户端实例,包含了所有相关当前会话数据,以及所有Web模块的变量。

在instance对象内创建与addon模块名称一致的新命名空间是个惯例。这就是为什么我们在

instance.oepetstore设置一个空dictionary。这个dictionary就是命名空间,用来声明我们模块内自己使用的所有类和变量。

2)类

JavaScript不像其他面向对象编程语言那样有类机制。更确切地说,它提供了面向对象编程语言元素,但你必须自己定义,自己选择如何做。

OpenERP Web框架提供工具来简化这个过程,让程序员以类似其他编程语言,如Java的方式编码。 定义一个新类,你需要从instance.web.Class类继承。语法如下:

instance.oepetstore.MyClass=instance.web.Class.extend({

say_hello:function(){

console.log("hello");

},

});

类的实例化:

var my_object=new instance.oepetstore.MyClass();

my_object.say_hello();

类可以有一个构造函数,它方法名为init()。你可以像大多数开发语言那样,传递参数给构造器: instance.oepetstore.MyClass=instance.web.Class.extend({

init:function(name){

this.name=name;

},

say_hello:function(){

console.log("hello",this.name);

},

});

类的继承

类可以被继承

instance.oepetstore.MySpanishClass=instance.oepetstore.MyClass.extend({

say_hello:function(){

this._super();

console.log("hola",this.name);

},

});

var my_object=new instance.oepetstore.MySpanishClass("Nicolas");

my_object.say_hello();

this._super()不是常用的类方法

3)Widgets Basics(基础部件)

OpenERP中Widget部件,是一个通用组件,专门用来向用户显示内容。

oepetstore实例中的petstore.js内容:

openerp.oepetstore=function(instance){

var_t=instance.web._t,

_lt=instance.web._lt;

var QWeb=instance.web.qweb;

instance.oepetstore={};

<!--部件-->

instance.oepetstore.HomePage=instance.web.Widget.extend({

start:function(){

console.log("pet store home page loaded");

},

});

instance.web.client_actions.add('petstore.homepage','instance.oepetstore.HomePage'); }

最后一行代码,把这个部件注册为客户端的action。当我们点击?Pet Store?Pet Store?Home Page菜单项时,客户端action让部件显示出来。

HomePage部件有一个start()方法。在部件初始化后,这方法被自动调用。它已接接受指令去显示其内容。我们将用它向用户显示一些内容。要做到这一点,我们使用所有部件都有的$el属性。该属性是一个jQuery对象,表示部件对应的HTML标签的根标签。部件包含了多个HTML标签,这些HTM标签有一个统一的根标签。默认情况下,部件都有一个空的根标签:一个<div>。

一个<div>HTML标签在没有具体内容的时候,是不可见的。这也解释了为什么显示

instance.oepetstore.HomePage时,是个空白区域,它根本没有任何内容。要想显示些内容,我们用jQuery该对象上的一些简单方法,在根标签中添加一些HTML标签:

instance.oepetstore.HomePage=instance.web.Widget.extend({

start:function(){

this.$el.append("<div>Hello dear OpenERP user!</div>");

},

});

常用方法:

appendTo()方法

var pettoys=new instance.oepetstore.PetToysList(this);//实例化PetToysList()部件

pettoys.appendTo(this.$(".oe_petstore_homepage_left"));//把pettoys添加到当前部件的

class=.oe_petstore_homepage_left的标签中

注意:new instance.oepetstore.PetToysList(this),其中参数this,代表调用此部件的实例,表示部件的隶属关系。

addClass()方法

this.$el.addClass("oe_petstore_homepage");//添加样式

getParent()方法

用于获取父部件

getChildren()方法

用来获取子部件列表:this.getChildren()[0].$el


web.py网络框
由:建材加盟网互联网用户整理提供,链接地址:
http://m.yuan0.cn/a/10402.html
转载请保留,谢谢!
最近更新/ NEWS
推荐专题/ NEWS