Djnago的一些零碎知識點

1.TEMPLATE_DIRS relative to the project folderhtml

http://stackoverflow.com/questions/9856683/using-pythons-os-path-how-do-i-go-up-one-directorypython

When developing with Django we need to specify our templates directory inside the settings.py with the TEMPLATE_DIRS directive. When it comes to deploying or publising the application we often forget to change this setting to the new folder where the application will be deployed. In order to counter this, it is possible to make this setting dynamic with the following in setting.pydjango

import os.path 
PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting. 

TEMPLATE_DIRS = ( 
    os.path.join(PROJECT_DIR, "templates"), 

# here you can add another templates directory if you wish. 
) 

2.Unicode對象app

 什麼是Unicode對象呢?ide

 你能夠認爲unicode對象就是一個Python字符串,它能夠處理上百萬不一樣類別的字符——從古老版本的Latin字符到非Latin字符,再到曲折的引用和艱澀的符號。函數

普通的python字符串是通過編碼的,意思就是它們使用了某種編碼方式(如ASCII,ISO-8859-1或者UTF-8)來編碼。 若是你把奇特的字符(其它任何超出標準128個如0-9和A-Z之類的ASCII字符)保存在一個普通的Python字符串裏,你必定要跟蹤你的字符串是用什麼編碼的,不然這些奇特的字符可能會在顯示或者打印的時候出現亂碼。 當你嘗試要將用某種編碼保存的數據結合到另一種編碼的數據中,或者你想要把它顯示在已經假定了某種編碼的程序中的時候,問題就會發生。 咱們都已經見到過網頁和郵件被???弄得亂七八糟。 ?????? 或者其它出如今奇怪位置的字符:這通常來講就是存在編碼問題了。 工具

可是Unicode對象並無編碼。它們使用Unicode,一個一致的,通用的字符編碼集。 當你在Python中處理Unicode對象的時候,你能夠直接將它們混合使用和互相匹配而沒必要去考慮編碼細節。this

Django 在其內部的各個方面都使用到了 Unicode 對象。 模型 對象中,檢索匹配方面的操做使用的是 Unicode 對象,視圖 函數之間的交互使用的是 Unicode 對象,模板的渲染也是用的 Unicode 對象。 一般,咱們沒必要擔憂編碼是否正確,後臺會處理的很好。編碼

注意,咱們這裏只是對Unicode對象進行很是淺顯的概述,若要深刻了解你可能須要查閱相關的資料。 這是一個很好的起點:http://www.joelonsoftware.com/articles/Unicode.htmlurl

3.Admin是如何工做的

 

在幕後,管理工具是如何工做的呢? 其實很簡單。

當服務啓動時,Django從`` url.py`` 引導URLconf,而後執行`` admin.autodiscover()`` 語句。 這個函數遍歷INSTALLED_APPS配置,而且尋找相關的 admin.py文件。 若是在指定的app目錄下找到admin.py,它就執行其中的代碼。

 在`` books`` 應用程序目錄下的`` admin.py`` 文件中,每次調用`` admin.site.register()`` 都將那個模塊註冊到管理工具中。 管理工具只爲那些明確註冊了的模塊顯示一個編輯/修改的界面。 

應用程序`` django.contrib.auth`` 包含自身的`` admin.py`` ,因此Users和Groups能在管理工具中自動顯示。 其它的django.contrib應用程序,如django.contrib.redirects,其它從網上下在的第三方Django應用程序同樣,都會自行添加到管理工具。

綜上所述,管理工具其實就是一個Django應用程序,包含本身的模塊、模板、視圖和URLpatterns。 你要像添加本身的視圖同樣,把它添加到URLconf裏面。 你能夠在Django基本代碼中的django/contrib/admin 目錄下,檢查它的模板、視圖和URLpatterns,但你不要嘗試直接修改其中的任何代碼,由於裏面有不少地方可讓你自定義管理工具的工做方式。 (若是你確實想瀏覽Django管理工具的代碼,請謹記它在讀取關於模塊的元數據過程當中作了些不簡單的工做,所以最好花些時間閱讀和理解那些代碼。)

相關文章
相關標籤/搜索