歡迎使用我的 在線工具

          小D

          讀歷史、看小說、寫程序都是我所愛。技術不好,頭腦不靈光,靠的是興趣。
          隨筆 - 35, 文章 - 25, 評論 - 13, 引用 - 0
          數據加載中……

          Django學習

          1. 安裝Django:python setup.py install

          2.? django-admin.py:Django的管理腳本。
          django-admin.py startproject newtest:創建一個新項目,這個項目下面可以保護N多WEB程序。

          3. 項目文件(自動生成):
          __init__.py
          表示這是一個 Python 的包
          manage.py
          提供簡單化的 django-admin.py 命令,特別是可以自動進行 DJANGO_SETTINGS_MODULES 和 PYTHONPATH

          的處理,而沒有這個命令,處理上面環境變量是件麻煩的事情
          settings.py
          它是django的配置文件
          uls.py
          url映射處理文件,

          4. manage.py runserver [port] 啟動web server,可以指定端口,默認為8000。

          5. 正則表達式解析參數
          ?Django中到處都是正則,而且提交的參數也可以通過正則處理,比如
          <?P<args>…> 將Group指定為args名,可以通過Match對象調用。Django中大量使用。

          6. request.POST, request.GET,以及通吃的request.REQUEST。

          7. Django開發順序:

          8. render_to_response ,它可以直接調用模板并返回生成好的文本,直接返回它即可。它接收兩個參

          數,第一個是模板的名字。它應該返回了一個HttpResponse對象,并擁有一個Context對象(變量環境操

          作)。而且傳入的模板自動render了處理傳入的dict的Context對象。

          9. 在 Django 模板中 {{}} 表示引用一個變量, {%%} 表示代碼調用。

          10. 注意Context對象中的autoescape變量,它默認是True,會自動對Context中的數據進行轉義

          (escape)。

          11. 創建Templates目錄:
          ?在項目下建立一個Templates目錄,然后
          修改settings.py

          TEMPLATE_DIRS = (
          ??? # Put strings here, like "/home/html/django_templates".
          ??? # Always use forward slashes, even on Windows.
          ??? './templates',
          )
          Django 還支持在 App 中定義一個 templates 目錄。這樣 Django 在啟動時會檢查所有的 App 的

          templates 目錄,如果存在,則將路徑放在 TEMPLATE_DIRS 之后,也就是項目的Templates之后。這樣

          就方便定義模板路徑了。

          12. django 中 session 是存放在數據庫中的。

          13. 添加數據庫:
          修改settings.py
          DATABASE_ENGINE = 'sqlite3'
          DATABASE_NAME = './data.db'
          DATABASE_USER = ''
          DATABASE_PASSWORD = ''
          DATABASE_HOST = ''
          DATABASE_PORT = ''
          ?然后,使用django-admin.py 或 或者其簡化manage.py
          比如: manage.py syncdb,來同步數據庫,就會生成一個數據庫文件。

          14. Django APP
          ?Model, Template, View 就合成了 MTV 這幾個字母。 Model 是用來針對數據庫,同時它可以用來自動

          生成管理界面, View 在前面我們一直都用它,用來處理請求和響應的相當于MVC框架中的 Controller

          的作用, Template 用來生成界面。
          創建App
          manage.py startapp appname
          自動生成如下文件:
          __init__.py
          表示 wiki 目錄是一個包。
          views.py
          用來放它的 view 的代碼。
          models.py
          用來放 model 代碼。
          15. 安裝App
          ?修改settings.py
          ?INSTALLED_APPS = (
          ??? 'django.contrib.auth',
          ??? 'django.contrib.contenttypes',
          ??? 'django.contrib.sessions',
          ??? 'django.contrib.sites',
          ??? 'appname',
          )

          16. Wiki 是 model 的名字,它需要從 models.Model 派生而來。采用ORM,無需關心底層的數據庫
          17. 數據庫操作:
          ?對于數據庫的記錄有兩種操縱方式,一種是集合方式,一種是對象方式。集合方式相當于表級

          操作,在新版的 0.92 中可以使用 model.objects 來處理。 objects 對象有一些集合方式的操作,如

          all() 會返回全部記錄, filter() 會根據條件返回部分記錄。而象插入新記錄則需要使用記錄方式來

          操作,有時要直接使用 model 類。filter() 中使用的參數與一般的 db-api 是一樣的,但如果是比較

          相等,可以為: pagename__exact=pagename 也可以簡化為 pagename=pagename 。上面__后面是比較條

          件。
          18. 可以為不同的App添加不同的template。只要將添加的App模板目錄加到settings.py中。
          19. admin 是 Django 提供的一個核心 app(既然是 app 就需要安裝,一會就看到了),它可以根據你的

          model 來自動生成管理界面。

          20. 簡單的命令 manage.py reset address,重置指定的數據表,也就是會drop掉舊表,然后生成新表

          ,可以修改表結構,但是所有的數據會刪除。
          21. 修改setting.py
          把 LANGUAGE_CODE 由 'en' 改為 'zh-cn' , TIME_ZONE 建議改為 'CCT'
          刷新下界面,admin管理app就可以變成中文界面。
          22. Django中一個通用的view生成模塊。django.views. generic. list_detail,給出常用的現實方案

          ,而不需要我們自己編寫view,來控制顯示。具體參見,相應的模塊說明。
          23. include 可以方便移植,每個 app 都可以有獨立的 urls.py ,然后可以與主 urls.py 合在一起使

          用。將app的urls.py來包含到指定的主urls.py中。
          24. 使用 object_list() 需要的模板文件名為: app_label/model_name_list.html ,這是缺省要查找

          的模板名。
          25. 永遠記住不要在python中留不必要的空行或空格,那是程序錯誤的萬惡之源。
          26. 要想在django中取得模板,請用app+下劃線+模板名格式來取
          27. 實現排序,只要在model類中添加一個名叫Meta 內部類,并設置其ordering = [‘字段名’],就會

          按指定的字段排序,’-’表示倒序。

          28. 實現分頁,仍使用django內置的generic view 機制,在使用 generic view的 object_list 時,它

          會根據 URL Dispatch 中是否設置了 paginate_by 這個參數來決定是否使用分頁機制。一會我們會看到

          在 urls.py 的這個參數。一旦設置了這個參數,則 object_list 會使用 Django 提供的一個分頁處理

          器來實現分頁。它會自動產生分頁所用到的許多的變量,這里我們使用了 has_previous, previous,

          has_next, next 這四個變量,還有其它一些變量可以使用。
          修改urls.py :??? (r'^/?$', 'django.views.generic.list_detail.object_list',
          ??????? dict(paginate_by=10, **info_dict)),
          這里使用10行記錄分頁,并把info_dict和paginate_by變量一起合成一個dict,注意dict和dict合并,

          必須使用可變參數**。

          29. 使用site_media:也即是指定放置多媒體文件的路徑。
          ?修改urls.py ,注意是project的urls.py,
          (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
          ??????? {'document_root': settings.STATIC_PATH}),
          django.views.static.serve,需要document_root參數,我們可以在settings.py中指定。那么我們的多

          媒體文件就放置在settings.py指定的STATIC_PATH目錄中。
          注意我們的settings.py文件的信息,可以通過 django.conf.setting來取得,他會先取得當前project

          的settings模塊的信息也就是DJANGO_SETTINGS_MODULE環境變量指定的settings模塊,當前project中可

          以從當前project中取得,如果你想在項目外讀取該settings模塊,需要指定環境變量

          DJANGO_SETTINGS_MODULE,而且要在path環境變量中加入當前project目錄,然后是全局的

          django.conf.global_settings的信息。

          30. 搭建模板框架,我們可以建立一個基本模板,比如base.html,在這個模塊中放置通用的東西,然后

          其它的模塊擴展至他。
          注意:{% block content %}content{% endblock %}其它的所有繼承該模塊的模塊,新加的內容都必須

          寫在content中。
          擴展模塊使用 extends :比如:{% extends "基本模塊" %},注意必須寫在子模塊的開頭。

          31. 給Django添加filter:
          ?需要在app目錄下面新建一個目錄 templatetags,該目錄放置擴展filter,還可以擴展 Tag ,

          還可以設置模板變量,還可以進行塊處理等復雜的操作。
          ?為了使這個文件成為一個包,需要添加__init__.py文件,為空就可。
          然后添加一個filter文件,比如:change_gender.py,取得模板庫,django.template. Library(),
          然后將filer注冊給這個庫就好了,比如:

          register = django.template.Libary(),
          然后register.filter(‘過濾器名’,過濾器方法對象)
          或者使用裝飾器,@register.filter(name=’過濾方法’),裝飾器,寫在過濾方法上面,他將過濾方法

          作為一個參數傳遞給裝飾器方法。

          32. 可以在模板開始處,使用{%load 過濾器%},load使一個tag,來加載過濾器,他將會在response給

          客戶端時調用。{% cycle mytr1,mytr2%},這里的cycle也是一個tag,他將循環使用后面給定的css 類

          33. 再要使用過濾器的地方使用管道,加上過濾器,管道標簽’|’(UNIX系統中常用),后面為過濾器

          34.一般對于template的修改或者url,view,model的修改都不需要重啟服務器,而對于project的修改

          ,或者setting.py文件的修改,都需要重啟服務器。

          35. 設置一般用戶,通過admin在admin管理程序中添加,一般自動使用MD5加密,當然你也可以使用其它

          的加密算法,也可以使用加密后填入密碼框,當然這種加密算法必須是django所支持的。

          36. django.contrib.admin.views.decorators import staff_member_required
          通過staff_member_required 這個裝飾器,就可以讓當前被裝飾的請求處理方法,處理,如果沒有登陸

          ,而進入該方法,就會轉到admin登陸界面。

          37. 注意在request對象中有一個user對象,它就是當前登錄的用戶。我們可以通過其控制用戶的登錄行

          為。例如在settings.py中設置一個UPLOAD_USER,然后在上傳方法中處理,就可以控制用戶的上傳行為

          38. 查詢模塊。name_icontains 是 Django 中過濾條件的寫法。這里是說只要包含指定的字符的即可,

          而且不區分大小寫。

          39. i18n,對于國際化的處理,這里不多說,因為我這里沒遇到問題,不過要記住確認所有的編碼統一

          ,而且為國際統一編碼,最好都用utf-8。

          40. 自定義Tag。首先,Tag必須是django.template.Node類型。然后在這個Node 調用它們的 render()

          方法,然后將輸出結果拼接起來,也就是返回給客戶端的結果。然后是注冊到系統中,并使用注冊方法

          。注意這個Tag所對應的處理類,應該放在在templateTags目錄下,然后在模板中使用的時候,要加載這

          個Tag,也就是對應得處理模塊。我想filter和Tag在實際上時同一種東西。

          總結:上面是我初學Django的總結,有很多不足。

          ?????????------?? 2009年09月

          14日 晚上21點

          posted on 2009-11-04 20:46 vagasnail 閱讀(4137) 評論(0)  編輯  收藏 所屬分類: python


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长治市| 同德县| 湘西| 彰武县| 渑池县| 黎城县| 八宿县| 台州市| 阜平县| 拉萨市| 安新县| 南汇区| 监利县| 梁河县| 油尖旺区| 星子县| 闸北区| 沧州市| 南皮县| 五家渠市| 航空| 泾川县| 澎湖县| 山东省| 新闻| 安塞县| 衡阳市| 沁阳市| 乌兰县| 武定县| 乌兰浩特市| 揭阳市| 无锡市| 峨眉山市| 慈利县| 安新县| 永定县| 图片| 木兰县| 商丘市| 三原县|