Home | Mirror | Search

3. Pylons

3.1. Getting Started with Pylons

3.1.1. Installing

[neo@development ~]$ curl http://pylonshq.com/download/1.0/go-pylons.py | python - mydevenv
[neo@development ~]$ source mydevenv/bin/activate
(mydevenv)[neo@development ~]$

(mydevenv)[neo@development ~]$ paster create -t pylons helloworld	
	

Running the application

(mydevenv)[neo@development ~]$ cd helloworld
(mydevenv)[neo@development helloworld]$ paster serve --reload development.ini
Starting subprocess with file monitor
Starting server in PID 26895.
16:38:39,051 INFO  [paste.httpserver.ThreadPool] Cannot use kill_thread_limit as ctypes/killthread is not available
serving on http://127.0.0.1:5000	
	

create a controller

(mydevenv)[neo@development helloworld]$ paster controller hello
Creating /home/neo/helloworld/helloworld/controllers/hello.py
Creating /home/neo/helloworld/helloworld/tests/functional/test_hello.py	
	

http://192.168.3.9:5000/hello/index

3.1.2. Debian/Ubuntu

$ sudo apt-cache search pylons
$ sudo apt-get install python-pylons
$ paster create -t pylons helloworld
/usr/lib/pymodules/python2.6/pylons/templating.py:610: UserWarning: Unbuilt egg for setuptools [unknown version] (/usr/lib/python2.6/dist-packages)
  Engine = entry_point.load()
Selected and implied templates:
  Pylons#pylons  Pylons application template

Variables:
  egg:      helloworld
  package:  helloworld
  project:  helloworld
Enter template_engine (mako/genshi/jinja2/etc: Template language) ['mako']:
Enter sqlalchemy (True/False: Include SQLAlchemy 0.5 configuration) [False]: True
Creating template pylons
Creating directory ./helloworld
  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 deployment.ini_tmpl_tmpl to ./helloworld/helloworld/config/deployment.ini_tmpl
      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
    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 model
      Creating ./helloworld/helloworld/model/
      Copying __init__.py_tmpl to ./helloworld/helloworld/model/__init__.py
      Copying meta.py_tmpl to ./helloworld/helloworld/model/meta.py
    Recursing into public
      Creating ./helloworld/helloworld/public/
      Copying bg.png to ./helloworld/helloworld/public/bg.png
      Copying favicon.ico to ./helloworld/helloworld/public/favicon.ico
      Copying index.html_tmpl to ./helloworld/helloworld/public/index.html
      Copying pylons-logo.gif to ./helloworld/helloworld/public/pylons-logo.gif
    Recursing into templates
      Creating ./helloworld/helloworld/templates/
    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 MANIFEST.in_tmpl to ./helloworld/MANIFEST.in
  Copying README.txt_tmpl to ./helloworld/README.txt
  Copying development.ini_tmpl to ./helloworld/development.ini
  Recursing into docs
    Creating ./helloworld/docs/
    Copying index.txt_tmpl to ./helloworld/docs/index.txt
  Copying ez_setup.py to ./helloworld/ez_setup.py
  Copying setup.cfg_tmpl to ./helloworld/setup.cfg
  Copying setup.py_tmpl to ./helloworld/setup.py
  Copying test.ini_tmpl to ./helloworld/test.ini
Running /usr/bin/python setup.py egg_info

		

配置host監聽地址

$ cd helloworld
$ vim development.ini		
host = 0.0.0.0
		

啟動服務

$ paster serve --reload development.ini
		

3.2. config/routing.py

url routing 做為靜態化讓所有尾碼加上.html

(mydevenv)[neo@development helloworld]$ vim helloworld/config/routing.py

    map.connect('/{controller}/{action}.html')
    map.connect('/{controller}/{action}/{id}.html')
	

3.3. mako template

http://www.makotemplates.org/

3.3.1. include

		
<%include file="header.html"/>

    hello world

<%include file="footer.html"/>
		
		

傳遞參數

		
<%include file="toolbar.html" args="current_section='members', username='ed'"/>
		
		

3.3.2. inherit

		
<%inherit file="base.html"/>
		
		
comments powered by Disqus