本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7595168
建立时间:2006年5月29日




[Pylons学习]Pylons初探
软件技术

lhwork 发表于 2007/1/10 9:50:24

安装:1. 下载安装工具ez_setup.py2. 命令行运行:python ez_setup.py Pylons    耐心等待,安装结束。3. 设置环境变量    系统变量->path->;C:\Python24\Scripts4. 命令行运行:paster    产生下面类似结果,则说明安装成功。运行结果Usage: C:\Python24\Scripts\paster-script.py COMMANDusage: paster-script.py [paster_options] COMMAND [command_options] options:  --version         show program's version number and exit  --plugin=PLUGINS  Add a plugin to the list of commands (plugins are Egg                    specs; will also require() the Egg)  -h, --help        Show this help message Commands:  create       Create the file layout for a Python distribution  grep         Search project for symbol  help         Display help  make-config  Install a package and create a fresh config file/directory  points       Show information about entry points  serve        Serve the described application  setup-app    Setup an application, given a config file pylons:  controller   Create a Controller and functional test for it     The Controller command will create the standard controller template    file and associated functional test to speed creation of controllers.     Example usage::         yourproj% paster controller comments        Creating yourproj/yourproj/controllers/comments.py        Creating yourproj/yourproj/tests/functional/test_comments.py     If you'd like to have controllers underneath a directory, just include    the path as the controller name and the necessary directories will be    created for you::         yourproj% paster controller admin/trackback        Creating yourproj/controllers/admin        Creating yourproj/yourproj/controllers/admin/trackback.py        Creating yourproj/yourproj/tests/functional/test_admin_trackback.py   shell        Open an interactive shell with the Pylons app loaded     The optional CONFIG_FILE argument specifies the config file to use for    the interactive shell. CONFIG_FILE defaults to 'development.ini'.     This allows you to test your mapper, models, and simulate web requests    using ``paste.fixture``.     Example::         $ paster shell my-development.ini 开始动手:1. 建立一个Pylons工程    命令行运行:    F:\python\lab\Pylons>paster create --template=pylons helloworld    产生下面类似结果:运行结果Selected and implied templates:  pylons#pylons  Pylons application template Variables:  egg:      helloworld  package:  helloworld  project:  helloworldCreating template pylonsCreating directory .\helloworld  Recursing into +egg+.egg-info    Creating .\helloworld\helloworld.egg-info/    Copying paste_deploy_config.ini_tmpl_tmpl to .\helloworld\helloworld.egg-info\paste_deploy_config.ini_tmpl  Recursing into +package+    Creating .\helloworld\helloworld/    Copying __init__.py_tmpl to .\helloworld\helloworld\__init__.py    Recursing into config      Creating .\helloworld\helloworld\config/      Copying __init__.py_tmpl to .\helloworld\helloworld\config\__init__.py      Copying environment.py_tmpl to .\helloworld\helloworld\config\environment.py      Copying middleware.py_tmpl to .\helloworld\helloworld\config\middleware.py       Copying routing.py_tmpl to .\helloworld\helloworld\config\routing.py    Recursing into controllers      Creating .\helloworld\helloworld\controllers/      Copying __init__.py_tmpl to .\helloworld\helloworld\controllers\__init__.py      Copying error.py_tmpl to .\helloworld\helloworld\controllers\error.py      Copying template.py_tmpl to .\helloworld\helloworld\controllers\template.py    Recursing into docs      Creating .\helloworld\helloworld\docs/      Copying index.txt_tmpl to .\helloworld\helloworld\docs\index.txt    Recursing into i18n      Creating .\helloworld\helloworld\i18n/      Copying __init__.py_tmpl to .\helloworld\helloworld\i18n\__init__.py    Recursing into lib      Creating .\helloworld\helloworld\lib/      Copying __init__.py_tmpl to .\helloworld\helloworld\lib\__init__.py      Copying app_globals.py_tmpl to .\helloworld\helloworld\lib\app_globals.py      Copying base.py_tmpl to .\helloworld\helloworld\lib\base.py      Copying helpers.py_tmpl to .\helloworld\helloworld\lib\helpers.py    Recursing into models      Creating .\helloworld\helloworld\models/      Copying __init__.py_tmpl to .\helloworld\helloworld\models\__init__.py    Recursing into public      Creating .\helloworld\helloworld\public/      Copying index.html_tmpl to .\helloworld\helloworld\public\index.html    Recursing into templates      Creating .\helloworld\helloworld\templates/      Copying autohandler to .\helloworld\helloworld\templates\autohandler    Recursing into tests      Creating .\helloworld\helloworld\tests/      Copying __init__.py_tmpl to .\helloworld\helloworld\tests\__init__.py      Recursing into functional        Creating .\helloworld\helloworld\tests\functional/        Copying __init__.py_tmpl to .\helloworld\helloworld\tests\functional\__init__.py      Copying test_models.py_tmpl to .\helloworld\helloworld\tests\test_models.py    Copying websetup.py_tmpl to .\helloworld\helloworld\websetup.py  Copying README.txt_tmpl to .\helloworld\README.txt  Copying development.ini_tmpl to .\helloworld\development.ini  Copying setup.cfg_tmpl to .\helloworld\setup.cfg  Copying setup.py_tmpl to .\helloworld\setup.pyRunning C:\Python24\python.exe setup.py egg_infoAdding Pylons to paster_plugins.txtAdding WebHelpers to paster_plugins.txt2. 运行这个新建的工程    1. 命令行运行:        cd helloworld        paster serve --reload development.ini    2. 访问http://127.0.0.1:5000/ ,你将看到欢迎页面。    3. 在helloworld/public目录下创建一个test.html的文件,内容如下:<html>    <body>        Hello World!    </body></html>     4. 访问http://127.0.0.1:5000/test.html,你将看到“HelloWorld!”。 3. 禁用调试功能    将development.ini文件中的:    #set debug = false    改成:    set debug = false 4. 创建一个控制器、修改Routes    1. 命令行运行:F:\python\lab\Pylons\helloworld>paster controller hello    2. 修改helloworld/controllers/hello.py,代码如下: 1from helloworld.lib.base import *23class HelloController(BaseController):4    def index(self):5        return Response('hello world')     3. 修改helloworld/config/routing.py,代码如下:  1""" 2Setup your Routes options here 3""" 4import sys, os 5from routes import Mapper 6 7def make_map(global_conf={}, app_conf={}): 8    root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 910    map = Mapper(directory=os.path.join(root_path, 'controllers'))11    12    # This route handles displaying the error page and graphics used in the 404/50013    # error pages. It should likely stay at the top to ensure that the error page is14    # displayed properly.15    map.connect('error/:action/:id', controller='error')16    17    # Define your routes. The more specific and detailed routes should be defined first,18    # so they may take precedent over the more generic routes. For more information, refer19    # to the routes manual @ http://routes.groovie.org/docs/20    map.connect('', controller='hello', action='index')21    map.connect(':controller/:action/:id')22    map.connect('*url', controller='template', action='view')2324    return map    4. 删除public/index.html。访问http://127.0.0.1:5000/hello和http://127.0.0.1:5000/,你将看到“hello world”。 5.模版和请求周期  1.创建模版文件:helloworld/templates/serverinfo.myt,代码如下:<p>Hi, here's the server environment: <br /><% str(request.environ) %></p> <p>and here's the URL you called: <% h.url_for() %></p>    2. 修改helloworld/controllers/hello.py,代码如下:from helloworld.lib.base import * class HelloController(BaseController):    def index(self):        return Response('hello world')    def serverinfo(self):        return render_response('/serverinfo.myt')   3.访问http://127.0.0.1:5000/hello/serverinfo,你将看到下面类似结果:运行结果Hi, here's the server environment:{'HTTP_REFERER': 'http://pylonshq.com/docs/0.9.3/getting_started.html', 'paste.recursive.forward': , 'pylons.routes_dict': {'action': 'serverinfo', 'controller': 'hello', 'id': None}, 'paste.recursive.include': , 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/hello/serverinfo', 'SERVER_PROTOCOL': 'HTTP/1.1', 'QUERY_STRING': '', 'paste.throw_errors': True, 'CONTENT_LENGTH': '', 'HTTP_ACCEPT_CHARSET': 'gb2312,utf-8;q=0.7,*;q=0.7', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'helloworld=ef423552a79452b4061d63335840e6690237c4375498846bc40a5e9218518af5', 'SERVER_NAME': '0.0.0.0', 'REMOTE_ADDR': '127.0.0.1', 'pylons.environ_config': {'cache': 'beaker.cache', 'session': 'beaker.session'}, 'paste.expected_exceptions': [], 'wsgi.url_scheme': 'http', 'beaker.cache': , 'paste.config': {'global_conf': {'error_email_from': 'paste@localhost', 'email_to': 'you@yourdomain.com', 'debug': 'false', '__file__': 'F:\\python\\lab\\Pylons\\helloworld\\development.ini', 'smtp_server': 'localhost', 'here': 'F:\\python\\lab\\Pylons\\helloworld'}, 'app_conf': {'session_key': 'helloworld', 'package': 'helloworld', 'session_secret': 'somesecret', 'cache_dir': 'F:\\python\\lab\\Pylons\\helloworld/data', 'session_data_dir': 'F:\\python\\lab\\Pylons\\helloworld/data\\sessions', 'cache_data_dir': 'F:\\python\\lab\\Pylons\\helloworld/data\\cache'}}, 'SERVER_PORT': '5000', 'paste.recursive.script_name': '', 'wsgi.input': , 'HTTP_HOST': '127.0.0.1:5000', 'beaker.session': {'_accessed_time': 1164775636.45, '_creation_time': 1164775537.0710001}, 'paste.recursive.include_app_iter': , 'wsgi.multithread': True, 'paste.httpexceptions': , 'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'wsgi.version': (1, 0), 'paste.registry': , 'wsgi.run_once': False, 'wsgi.errors': ', mode 'w' at 0x00ACE0B0>, 'wsgi.multiprocess': False, 'HTTP_ACCEPT_LANGUAGE': 'zh-cn,zh;q=0.5', 'CONTENT_TYPE': '', 'REMOTE_HOST': 'localhost', 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_KEEP_ALIVE': '300'} and here's the URL you called: /hello/serverinfo 6. 使用Sessions    代码片段:1def serverinfo(self):2    session['name'] = 'George'3    session.save()4    return render_response('/serverinfo.myt')7. 控制器变量和模版全局变量    控制器变量    1. 修改helloworld/controllers/hello.py,代码如下:from helloworld.lib.base import * class HelloController(BaseController):    def index(self):        return Response('hello world')    def serverinfo(self):        c.value = 2        return render_response('/serverinfo.myt')        2. 修改helloworld/templates/serverinfo.myt,代码如下:<p>The value of <tt>c.value</tt> is:<% c.value %>     3. 访问http://127.0.0.1:5000/hello/serverinfo,你将看到“The value of c.value is: 2”。  模版全局变量 1.修改lib/app_globals.py,代码如下: 1class Globals(object): 2 3    def __init__(self, defaults, app, **extra): 4        self.message = 'Hello'     5         6    def __del__(self): 7        """ 8        Put any cleanup code to be run when the application finally exits  9        here.10        """11        pass 2.修改helloworld/controllers/hello.py,代码如下: from helloworld.lib.base import * class HelloController(BaseController):    def index(self):        return Response('hello world')    def serverinfo(self):        c.value = 2        return render_response('/serverinfo.myt')        def app_globals_test(self):        resp = Response()        if g.message == 'Hello':            resp.write(g.message)            g.message = 'Hello World!'        else:            resp.write(g.message)        return resp 3.访问http://127.0.0.1:5000/hello/app_globals_test/,你将看到“Hello World!”参考资料:http://pylonshq.com/docs/0.9.3/getting_started.html


阅读全文(3619) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.328 second(s), page refreshed 144770640 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号