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

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

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

    歡迎使用我的 在線工具

    小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 閱讀(4132) 評論(0)  編輯  收藏 所屬分類: python


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


    網站導航:
     
    主站蜘蛛池模板: 日产久久强奸免费的看| 亚洲视频在线观看一区| 国产午夜亚洲精品不卡| 日本免费人成黄页在线观看视频 | 亚洲尤码不卡AV麻豆| 一区二区视频免费观看| 亚洲国产成人久久一区久久| 免费无码一区二区| 中文字幕亚洲不卡在线亚瑟| 中国一级全黄的免费观看| 亚洲精品成人片在线播放| 久久精品无码精品免费专区| 亚洲国产天堂久久综合网站| 亚洲日本在线免费观看| 亚洲免费福利在线视频| 国产又长又粗又爽免费视频| 免费国产高清毛不卡片基地| 中文字幕亚洲激情| 久久免费视频精品| 激情内射亚洲一区二区三区爱妻 | 亚洲AV无码乱码在线观看| 一级黄色片免费观看| 亚洲AV无码专区亚洲AV伊甸园| 99久久国产免费中文无字幕| 亚洲第一成人在线| 亚洲日韩人妻第一页| 久久久久久国产精品免费免费男同 | 亚洲中文字幕无码mv| 亚洲成av人在片观看| 日韩精品无码免费专区午夜不卡| 亚洲综合久久综合激情久久| 国产精品成人免费视频网站京东| 特级毛片A级毛片100免费播放 | 亚洲视频在线免费| 无码免费一区二区三区免费播放 | 亚洲精品成人网站在线观看| 国产精品1024永久免费视频| 黄人成a动漫片免费网站| 久久国产精品亚洲综合| 午夜成年女人毛片免费观看| 一个人看的免费观看日本视频www|