<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Read Sean

    Read me, read Sean.
    posts - 508, comments - 655, trackbacks - 9, articles - 4

    [Pylons] 默認項目結構

    Posted on 2009-01-26 12:33 laogao 閱讀(991) 評論(0)  編輯  收藏 所屬分類: On Python

    大家新年好!

    前一篇隨筆中,大家了解了什么是Pylons,有哪些特點,今天筆者繼續給介紹默認生成的項目結構。

    通過Paste創建新的Pylons應用很簡單,就是一句"paster create -t pylons [應用名]"命令,其中"-t pylons"或者全稱"--template=pylons",用以告訴Paste我們新建的項目,將是一個Pylons應用,或者說,從一個預定義好的Pylons默認項目模板生成。如果你愿意,你也可以自己來制作新的模板以符合需要。"paster create --list-templates"可以查看當前可用的模板。

    假定我們新建的Pylons項目名稱為NewApp,那么執行"paster create -t pylons NewApp"后,我們將得到一個新的NewApp目錄,其中包含一個docs目錄(文檔)、一個newapp目錄(代碼)、一個NewApp.egg-info目錄(元數據)和一些頂級配置文件。

    在開發過程中,我們經常會用到的是代碼目錄(這里是newapp)和位于項目根目錄下的development.ini和test.ini文件了。注意這里newapp的大小寫,Pylons在生成項目的時候,不論你指定的項目名稱大小寫是怎樣,這里會自動.lower()轉小寫,只有項目頂級路徑和egg信息會保留原始大小寫,筆者認為這更加符合Web應用的nature。

    代碼目錄下包括config、controllers、lib、model、public、templates和tests子目錄,分別用于存放配置(如環境、中間件、路徑查找邏輯)、控制器(處理請求)、全局輔助代碼(全局變量、helpers等)、模型(后臺數據訪問)、靜態頁面/媒體文件、頁面模板和測試代碼。

    最后說說ini文件:默認生成的development.ini和test.ini顧名思義分別對應開發和測試需要的基本配置,我們可以通過修改相應的參數配置來指定具體設定,如服務器IP和端口、數據庫連接、日志等。看到這里你也許會問,那么產品環境呢?答案是默認沒有生成,你可以從development.ini修改成需要的產品環境配置,也可以通過paster make-config newapp production.ini生成一個默認的產品環境典型配置。

    以development.ini為例,Pylons的ini文件主要包括4個部分的內容:

    1- 全局默認參數,如
    [DEFAULT]
    debug?
    =?true
    #?Uncomment?and?replace?with?the?address?which?should?receive?any?error?reports
    #email_to?
    =?you@yourdomain.com
    smtp_server?
    =?localhost
    error_email_from?
    =?paste@localhost



    2- 服務器配置,如
    [server:main]
    use?
    =?egg:Paste#http
    host?
    =?127.0.0.1
    port?
    =?5000



    3- 應用程序配置,如
    [app:main]
    use?
    =?egg:NewApp
    full_stack?
    =?true

    cache_dir?
    =?%(here)s/data
    beaker.session.key?
    =?newapp
    beaker.session.secret?
    =?somesecret

    #?If?you'd?like?to?fine-tune?the?individual?locations?of?the?cache?data?dirs
    #?for?the?Cache?data
    ,?or?the?Session?saves,?un-comment?the?desired?settings
    #?here:
    #beaker.cache.data_dir?
    =?%(here)s/data/cache
    #beaker.session.data_dir?
    =?%(here)s/data/sessions

    #?SQLAlchemy?database?URL
    sqlalchemy.url?
    =?sqlite:///%(here)s/development.db

    #?WARNING:?*THE?LINE?BELOW?MUST?BE?UNCOMMENTED?ON?A?PRODUCTION?ENVIRONMENT*
    #?Debug?mode?will?enable?the?interactive?debugging?tool
    ,?allowing?ANYONE?to
    #?execute?malicious?code?after?an?exception?is?raised.
    #set?debug?
    =?false
    簡單說明一下,這里的full_stack設置為true表示打開交互式調試和錯誤報告等功能,"%(here)s"會被替換成項目所在路徑,類似相對路徑url中的"."轉絕對路徑,而beaker.*為配置會話相關的設定,如緩存、cookie基本內容等。對于產品環境來說,比較重要的一個配置是"set debug=false",否則一旦出現異常,交互式調試將使得攻擊者能夠執行系統命令。

    4- 日志,如
    [loggers]
    keys?
    =?root,?routes,?newapp,?sqlalchemy

    [handlers]
    keys?
    =?console

    [formatters]
    keys?
    =?generic

    [logger_root]
    level?
    =?INFO
    handlers?
    =?console

    [logger_routes]
    level?
    =?INFO
    handlers?
    =
    qualname?
    =?routes.middleware
    #?
    "level?=?DEBUG"?logs?the?route?matched?and?routing?variables.

    [logger_newapp]
    level?
    =?DEBUG
    handlers?
    =
    qualname?
    =?newapp

    [logger_sqlalchemy]
    level?
    =?INFO
    handlers?
    =
    qualname?
    =?sqlalchemy.engine
    #?
    "level?=?INFO"?logs?SQL?queries.
    #?
    "level?=?DEBUG"?logs?SQL?queries?and?results.
    #?
    "level?=?WARN"?logs?neither.??(Recommended?for?production?systems.)

    [handler_console]
    class?
    =?StreamHandler
    args?
    =?(sys.stderr,)
    level?
    =?NOTSET
    formatter?
    =?generic

    [formatter_generic]
    format?
    =?%(asctime)s,%(msecs)03d?%(levelname)-5.5s?[%(name)s]?%(message)s
    datefmt?
    =?%H:%M:%S

    OK,這一篇就先講到這兒,下一篇將介紹Routes和controller。


    主站蜘蛛池模板: 亚洲精品国产第一综合99久久| 亚洲一区二区三区四区在线观看 | 国产亚洲精品一品区99热| 亚洲人成网亚洲欧洲无码| 一个人在线观看视频免费| 亚洲国产精品久久网午夜| 91av视频免费在线观看| 亚洲成AV人片久久| 免费精品国偷自产在线在线| 亚洲制服丝袜一区二区三区| 无码日韩精品一区二区免费| 亚洲熟妇无码八V在线播放| 国产在线播放免费| eeuss免费影院| 久久久影院亚洲精品| 16女性下面扒开无遮挡免费| 国产亚洲精品bv在线观看| 国产男女猛烈无遮挡免费网站| 亚洲老熟女五十路老熟女bbw| 国产yw855.c免费视频| 产传媒61国产免费| 久久精品亚洲综合专区| 无码国产精品一区二区免费I6| 亚洲精品乱码久久久久久V| 亚洲精品成人网久久久久久| 免费萌白酱国产一区二区三区| 亚洲综合综合在线| 国产真人无遮挡作爱免费视频| a级毛片免费网站| 亚洲福利秒拍一区二区| 国产男女猛烈无遮挡免费视频网站| 日韩大片在线永久免费观看网站| 亚洲精品国产美女久久久| 999久久久免费精品国产 | 国产免费人成视频在线播放播| 久久久久久久久亚洲| 四虎影院免费在线播放| a级毛片在线免费看| 国产AV旡码专区亚洲AV苍井空 | 久久不见久久见免费视频7| 亚洲精品无码专区在线|