RocketyKerrigell(啄木鸟社区)

http://wiki.woodpecker.org.cn/moin/RocketyKarrigell

Rockety的 Karrigell 使用体验 

Contents

  1. Karrigell

    1. 配置文件

      1. [Directories]
      2. [Applications]
      3. [Alias]
      4. [Server]
      5. [Translation]
    2. 设置MySQL与SQLite
      1. [密码设置]
      2. [使用方法]
    3. 编程
      1. 访问HTTP环境
  2. 在gadfly数据库中存储对象
    1. Gadfly数据库
    2. 存储对象
  3. 关于自定义root目录

1. Karrigell

1.1. 配置文件

配置选项在配置文件中设定。默认为服务器目录中的Karrigell.ini。你可以在命令行把它设为其它的文件。

配置文件分为几个部分:

1.1.1. [Directories]

root

设置root选项为根目录的完整路径,你从那里发布文档。初始安装这一项没有设定,默认为服务器目录,即指向为Karrigell/webapps/,这个选择你大可不必设置,因为是默认的。

protected

受保护目录列表;对于这些目录中的每个脚本,执行前都会先执行一个叫AuthentScript.py的脚本。这个AuthentScript.py必须由管理员创建并放进目录。

默认,只有admin目录是受保护的。用“;”分割来添加更多的目录。

allow_directory_listing

如果一个url对应的目录没有index文件,由本项来决定谁可以看这个目录的内容:

all = 所有人
none = 没有人
admin = 只有管理员 - 它的登录密码由admin目录中的k_password.py来配置。

默认值是“admin”。

1.1.2. [Applications]

映射扩展名的MIME类型;据我所知这可以在Netscape上工作,但IE上不行。

1.1.3. [Alias]

你可以为某个目录指定一个别名。例如,如果你创建这个别名:scripts = C:\My Documents\Karrigell scripts,那么http://localhost/scripts/index.htm这个url就会访问c:\My Documents\Karrigell scripts\index.htm这个文件。

这外功能很有意思,可以将你的服务器目录与开发目录分开,同时又不至于影响你的工作。

1.1.4. [Server]

port

设置服务器端口(默认为80),建议使用这个选择,如果你的系统里还安装了Apache,如果直接运行python Karrigell.py,就是不能不启动服务器了,Karrigell.ini使用这个port设置功能后,会指向一个8081的服务器端口。

当然,你也可以不开启,但在启动服务器后,要指明端口:

python Karrigell.py -P 8081

debug

这个选项指定debug级别。如果设置为1,所有被导入的模块在每次导入时都会被重置,所以如果你改动了某个被导入的脚本你也不必重启服务器。

silent

如果这个选项被设置为1,控制台窗口就不打印任何消息。

zip

如果这个选项被设置为1,并且用户代理支持gzip编码(大多数浏览器支持),服务器压缩发送给用户代理的数据。这减少用户网络负荷,但多少会增加一点服务器的负荷。

global

这个选项指定所有脚本运行时需要导入的模块的路径。如果有这样一行:

   global = %(base)s/myScript.py; %(base)s/myScript.py

则myScript和myScript模块都可以在所有脚本的名称空间中可用。

ignore

如果找不到就忽略的url列表(返回HTTP代码204而不是404)。默认忽略/favicon.ico。

1.1.5. [Translation]

指定应用程序使用的语言,无论浏览器的该选项是什么。如果不想做任何转译,就设置为lang=default,如果想使用英语,设置为lang=en,以此类推。

装载配置文件前karrigell设定了一个基本变量,它的值是服务器目录。参考默认配置文件Karrigell.ini中的%(base)s/。

1.2. 设置MySQL与SQLite

1.2.1. [密码设置]

Karrigell提供了两种默认的数据库支持,即MySQL和SQLite,我试用了下MySQL,能连接到数据库,并自动生成数据库,并能像phpMyAdmin那样管理数据库,同时还能根据所提供的数据库,自动生成py程序代码,感觉很爽。 通过简单的设置,这些功能就能使用了。 在Karrigell中的admin目录中,执行下面的命令:

python k_password.py

输入用户名及密码,如root,123。

1.2.2. [使用方法]

在浏览器中输出:

http://localhost:8000/InstantSite/mysql/index.ks/index

这些就能看到MySQL的数据库登录界面,输入出MySQL的服务器名称(一般为localhost),用户名及密码,就可以进入数据库进行操作了。

1.3. 编程

在karrigell中编程有几中风格:

  • 纯粹的python脚本,有一点不同,里面嵌有html
  • karrigell服务,可以处理整个站点
  • 象PHP那样,将python代码嵌入HTML

它们都会在这份文档中被描述,它们都使用同样的方式访问HTTP环境和表单域。

1.3.1. 访问HTTP环境

HTTP环境访问可以通过脚本名称空间中的全局变量来完成:

  • HEADERS
print HEADERS

将会得到:

{‘accept-language‘: ‘zh-cn,zh;q=0.5‘, ‘accept-encoding‘: ‘gzip,deflate‘, ‘keep-alive‘: ‘300‘, ‘accept‘: ‘text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5‘, ‘user-agent‘: ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.12) Gecko/20050919 Firefox/1.0.7‘, ‘accept-charset‘: ‘gb2312,utf-8;q=0.7,*;q=0.7‘, ‘connection‘: ‘keep-alive‘, ‘cookie‘: ‘sessionId=XWPqs2hw‘, ‘host‘: ‘localhost‘}
  • RESPONSE

大小写不敏感

{‘Content-Type‘: ‘text/html‘}

2. 在gadfly数据库中存储对象

Python脚本可以存储和检索数据库中的数据,无论是关系型数据库(象MySQL、PostGreSQL、SQLite)、对象数据库(象ZODB)还是其它类型的数据库(MetaKitKirbyBase),只需使用适当的模块即可(参考http://www.python.org/cgi-bin/moinmoin/DatabaseProgramming)。这些产品某些时候需要下载、安装以及学习如何使用它们。为了让这些变得简单,Karrigell基于gadfly数据库提供了一种完整的存储解决方案。

2.1. Gadfly数据库

Gadfly是一个用python语言实现的简单的关系型数据库系统,基于SQL结构化查询语言。它被包含在karrigell当中。安装以及如何在python脚本中使用它的教程,在gadfly-1.0.0/doc目录提供的有。基本上,你所要做的就是打开一个终端窗口,改变到gadfly-1.0.0目录,然后执行:

        python setup.py install

注意对Unix用户,安装它你必须具有root权限。更多内容参考installation.txt,尤其是第四节的如何加速,如果你是windows用户的话,还有SQL入门书gadfly.txt。

尽管它在执行效率、稳定性、处理并发访问等方面无法与MySQL或PostGreSQL相比,但对karrigell的目标(通信量适中的简单站点,不太可能使用大容量数据)来说它应当是个很好的选择。

2.2. 存储对象

程序编写者的一个常见任务是存储和检索数据库中的对象。使用面向对象的编程语言象python,需要在对象的名称、属性与表中列的名称与类型之间做以转换。

假定你有个person类是这样定义的:

class Person:
        def __init__( self, name, surname, age, info ):
                self.name = name
                self.surname = surname
                self.age = age
                self.info = info
        def show( self ):
                print "%s, %s (%s) - %s"                         % ( self.name, self.surname, self.age, self.info )

在存储类的实例到gadfly中之前,你必须先创建一个表:

cx = gadfly.gadfly()
cx.startup( "persons" )
sql = "CREATE TABLE Person ( name varchar, surname varchar, age integer, info varchar )"
cursor = cx.cursor()
cursor.execute( sql )

然后,对于每个Person实例,你还要这样做:

p = Person( ‘caulfield‘, ‘holden‘, 18, ‘catcher in the rye‘ )
vals = ‘name="%s", surname="%s", age=%s, info="%s"‘ % ( p.name, p.surname, p.age, p.info )
sql = ‘INSERT INTO Person (%s)‘ % vals
cursor.execute( sql )
cx.commit()

要检索名字匹配“caulfield”的对象,代码可能会是这样:

sql = ‘SELECT name, surname, age, info FROM Person WHERE name="caulfield"‘
cursor.execute(sql)
result=cursor.fetchall()[0]
p=Person(res[0], res[1], res[2], res[3])

3. 关于自定义root目录

文档中说只要编辑Karrigell.ini中[Directories]段的root选项,并且使用绝对路径就可以了,象这样:

root = /home/rocker/project

事实上,只这样改是不行的,还要把Karrigell自带的admin目录复制到你新的root目录,对于上例,就是project目录下。不然的话

python Karrigell.py

会报错。

这当中的具体原因,我还不清楚,但是这样做肯定就行了。以后你再

http://localhost

打开的就是你新的root目录中的文件了。

时间: 2024-10-29 11:31:55

RocketyKerrigell(啄木鸟社区)的相关文章

Life is short, you need Python

今年四五月份的时候我打算学一门计算机语言. 计算机语言实在是很多,选哪一个? 其实这个选择就和去市场买菜类似,想明白了自己的需求才能做好决定.你想做什么饭,就去买什么菜.想做南瓜粥,就要去买南瓜,想要做番茄炒蛋,就得买西红柿鸡蛋. 因为我没有编程基础,所以就想要选择一个容易入门的,所以就选了python. 图片中衣服上印着“人生苦短,我用python”这句话的人正是python之父,Guido van Rossum(吉多•范罗苏姆). 1989年圣诞,Monty Python"s Flying

[转]python 常用类库!

Python学习 On this page... (hide) 1.?基本安装 2.?Python文档 2.1?推荐资源站点 2.2?其他参考资料 2.3?代码示例 3.?常用工具 3.1?Python IDE 3.2?内置类库使用参考 3.3?常用第三方类库 3.4?其他东西 3.5?有意思的东西 3.6?普通但没准有用的东西 (Edit Section ↓) 1.? 基本安装 http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站:

Python 的类的下划线命名有什么不同?

1,以一个下划线开头的命名 ,如_getFile2,以两个下划线开头的命名 ,如__filename3,以两个下划线开头和结尾的命名,如 __init__()4,其它这些命名有什么不同吗 首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入.不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var

Python 的经典入门书籍

实python非常适合初学者入门,上手很容易.我就是完全通过网上资源学了python的.最大的是3点经验:1.找一本浅显易懂,例程比较好的教程,从头到尾看下去.不要看很多本,专注于一本.把里面的例程都手打一遍,搞懂为什么.2.去找一个实际项目练手.我当时是因为要做一个网站,不得已要学python.这种条件下的效果比你平时学一门新语言要好很多.所以最好是要有真实的项目做.可以找几个同学一起做个网站之类.3.最好能找到一个已经会python的人.问他一点学习规划的建议,然后在遇到卡壳的地方找他指点.

python网站

https://github.com/search?utf8=%E2%9C%93&q=python+sockethttps://github.com/search?p=2&q=python+server&ref=searchresults&type=Repositories&utf8=%E2%9C%93 http://www.cpython.net/http://bbs.pinggu.org/jg/ruanjianpeixun_python_3053022_1.ht

Python中的元类(译)

add by zhj: 这是大stackoverflow上一位小白提出的问题,好吧,我承认我也是小白,元类这块我也是好多次想搞明白, 但终究因为太难懂而败下阵来.看了这篇文章明白了许多,再加下啄木鸟社区的 Python 类型和对象  这篇文章.卧槽, 这简直就是珠联璧合,日月神剑啊,尼玛.终于干掉了元类.翻译时有修改,建议与原文一起看. 原文:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python?answe

【转】Python——编码规范

来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet MoinMoin 美化 050610 用Python进行开发时的编码风格约定 原文:PEP 008 <Style Guide for Python Code> 下载(中文pdf): PythonCodingRule.pdf 进一步的: Google Python Style Guide Python

学习Python的相关资料

Learning python the hardway Python Tip社区啄木鸟社区编程指南社区 Python基础教程MIT 计算机科学及其导论Harward:计算机科学CS50Crossin的编程教室 Web:自强学堂 Django基础教程Django搭建简易博客教程欢迎进入Flask大型教程项目Flask指南 游戏:用Python和PyGame写游戏 深入理解计算机系统 数据分析:利用Python进行数据分析Scientific-Python-Lectures Python ; Tok

python学习资料收集

http://old.sebug.net/paper/books/ 目录下有不少在线书,一部分如: 用Python做科学计算  http://old.sebug.net/paper/books/scipydoc/index.html 简明Python教程  http://old.sebug.net/paper/python/ Python手册  http://old.sebug.net/paper/books/python_hb/ Python初学者的资源总结 在文章中,作者整理了针对初学者零基