顯示具有 Django 標籤的文章。 顯示所有文章
顯示具有 Django 標籤的文章。 顯示所有文章

2008年11月5日 星期三

Django的escape

由於 escape 通常都會大量的使用,因此在Django 1.0 的 template 中,已經不需要設置 filter escape 了,因為它已經是預設值了

所以又多了一個 on/off 功能..

這樣才會停止 escape 的功能
{% autoescape off %}
    {{ variable }}
{% endautoescape %}


當然也可以這樣使用,variable1 將會停用 escape 功能,variable2 就啟用 escape 功能
{% autoescape off %}
    {{ variable1 }}
    {% autoescape on %}
        {{ variable2 }}
    {% endautoescape %}
{% endautoescape %}


這樣子也會啟用
{% autoescape off %}
    {{ variable|escape }}
{% endautoescape %}

2008年10月29日 星期三

Django的urls.py

在urls.py裡面,你會看到這樣的描述
(r'^admin/doc/', include('django.contrib.admindocs.urls'))


了解這樣的描述之前,要先了解urls.py的行為

其實講白了就是對照網址,看要給誰處理罷了。對照的方式為正規表示法,而且是由上到下,比對成功就丟給後面的function處理了,所以要小心設計,不然會有一些function苦無用武之地....

但為什麼上面的描述要加上include的字樣?

可以注意到前端的正規表示並未加上$(在正規表示法中,$代表結尾),因此它可以比對大範圍的admin/doc/....網址,比較有趣的是,include就是把....部份丟給另一個urls.py處理,因此每個app也可以擁有自己的urls.py,不一定要將所有的「轉址」放在專案根目錄的urls.py裡面

2008年10月26日 星期日

設置Django的Admin功能

其實我還不清楚這功能可以幹麼,哈!不過我看很多人都在想辦法設置它,所以我也先設置起來玩玩看!

1. 更改settings.py

共要改三個地方
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'c:/django_www/data.db'


INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
)




2. 配置sqlite3與data.db

打開DOS Prompt,下達
manage.py syncdb


然後照著上面的提示輸入


3. 更改urls.py

直接把內容換成這樣
from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    
# Example:
    
# (r'^www/', include('www.foo.urls')),
    
# (r'^$', 'www.helloworld.index'),
    
# Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    
# to INSTALLED_APPS to enable admin documentation:
    
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    
# Uncomment the next line to enable the admin:
    
(r'^admin/(.*)', admin.site.root),
)


然後就可以到http://localhost/admin/看看admin頁面了!

2008年10月24日 星期五

Python+Django+Apache

這篇文章講的非常清楚
http://thinkhole.org/wp/2006/04/03/django-on-windows-howto/


把四個需要安裝的整理出來

1. 安裝Python - version 2.5.2.2
http://www.activestate.com/store/download_file.aspx?binGUID=4656928e-d642-4aec-815e-b8d819b7cdbb

若無特殊需求,使用default一直下一步就可以了


2. 安裝Django - version 1.0
http://www.djangoproject.com/download/1.0/tarball/

下載完成之後,解壓縮後進入資料夾,打開cmd.exe,執行
python setup.py install

即可安裝完成


3. 安裝Apache,請到下載頁面選擇最新版本(xxx為版本)apache_xxx-win32-x86-no_ssl.msi
http://apache.ntu.edu.tw/httpd/binaries/win32/
(我下載的為apache_2.2.10-win32-x86-no_ssl.msi)

原本的路徑應為 - C:\Program File\....\Apache2.2
但為了修改方便建議安裝至 - C:\Apache


4. 安裝mod_python,請選擇與Python版本與Apache版本相符的最新版本,此為讓Apache支援python的django模組
http://apache.stu.edu.tw/httpd/modpython/win/3.3.1/
(我下載的為mod_python-3.3.1.win32-py2.5-Apache2.2.exe)

在安裝mod_python的時候,他會要你選擇一個資料夾,請指定你Apache的安裝目錄


全都安裝好之後,http://localhost/應該就可以看到apache的首頁了


但我們想要看的應該是django架構的網站,而不是apache內建的首頁,因此要開始做一些設定

1. 先用django建立一個專案
安裝django成功之後,可以到這裡C:\Python25\scripts看到一個叫django-admin.py的檔案(當然實際還是得看安裝位置),它其實是django為了方便使用者所製作出來的一隻可帶參數執行檔。因此當我們要用django在C:\目錄底下建立一個新的專案,就打開DOS Prompt,並輸入這兩行

cd c:\
c:\Python25\scripts\django-admin.py startproject django_www


就可以看到在c:\產生了一個django_www的目錄了!這時候我們可以用django內建的web server來看看畫面,打開DOS Prompt,輸入
c:\django_www\manage.py runserver


然後再到這裡http://localhost:8000/就可以看到django所產生的首頁了!看完之後可以把django內建的web server停止,因為接下來我們就要開始使用Apache當作web server了!(不過不停止也不會影響就是了)



2. 跟Apache說我要開始使用django了!
首先要先把mod_python載入apache的服務,因此需要打開C:\Apache\conf\httpd.conf來編輯,先隨便找一個地方加入這一行
LoadModule python_module modules/mod_python.so


然後也是隨便找一個地方貼上
MaxRequestsPerChild 1
<Location "/">
    SetHandler python-program
    PythonPath "['C:/'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE django_www.settings
    PythonAutoReload Off
    PythonDebug On
</Location>
Alias /site_media C:/django_www/media
Alias /media C:/Python25/Lib/site-packages/django/contrib/admin/media
<Location "/site_media">
    SetHandler None
</Location>
<Location "/media>
    Order Deny,Allow
    Allow from all
    SetHandler None
</Location>


然後重新啟動Apache就可以在http://localhost/看到django的首頁了!