上次在Dreamhost上é…ç½®Django,能够看到Djangoå¯åŠ¨çš„ç”»é¢åŽï¼ŒæŽ¥ç€å°±å¥½å‡ 天没玩它了。今天先把Djangoçš„adminé…èµ·æ¥ã€‚
《1.创建media目录》
Djangoå»ºè®®æ‰€æœ‰çš„é™æ€æ–‡ä»¶åº”该交给Apache管ç†ã€‚官方教程(Django on Dreamhost)使用专门管ç†mediaçš„å域åmedia.mydomain.com,有点太å°é¢˜å¤§ä½œäº†ã€‚我觉得在mydomain.com下建目录更好。一个mediaç›®å½•ç”¨äºŽå˜æ”¾è‡ªå·±çš„媒体,一个admin_media链接到djangoçš„adminçš„media。如下(顺便把jQuery也装上):
$> export SOFTWAREHOME=$HOME/mysoftware
$> export DOMAINROOT=$HOME/org.jbobos.onlinelist
$> ln -s $SOFTWAREHOME/Django-1.0.2-final/django/contrib/admin/media $DOMAINROOT/admin_media
$> mkdir $DOMAINROOT/media $DOMAINROOT/media/js
$> cd $DOMAINROOT/media/js
$> wget http://jqueryui.com/repository/files/jquery-ui-personalized-1.5.3.zip
$> unzip jquery-ui-personalized-1.5.3.zip
《2.修改.htaccess》
这时候æµè§ˆå™¨è¿˜çœ‹ä¸åˆ°mediaï¼Œå› ä¸º.htaccess将所有的HTTP请求都转给了dispatch.fcgi。
$> vi $DOMAINROOT/.htaccess
修改åŽçš„.htaccess文件如下,使mediaå’Œadmin_media开头的请求ä¸è¦è¢«è½¬å‘。.htaccessçš„å‰å››è¡Œç¦æ¢è‡ªå·±è¢«æµè§ˆï¼Œã€ŒOptions -Indexesã€ç¦æ¢ç›®å½•被æµè§ˆã€‚
<Files .htaccess>
order allow,deny
deny from all
</Files>
Options -Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^(media|admin_media)/.*$ - [L]
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]
现在在æµè§ˆå™¨ä¸è¾“å…¥http://onlinelist.jbobos.org/media/js/example.html,å¯ä»¥çœ‹åˆ°jQuery UIçš„sample了。mod_rewrite的详细文档请å‚ç…§Apache Module mod_rewrite – URL Rewriting Engine。
《3.修改settings.py》
$> export PROJECTSHOME=$HOME/myprojects
$> export PROJECTNAME=djsite_onlinelist
$> vi $PROJECTSHOME/$PROJECTNAME/settings.py
settings.py文件ä¸è¢«ä¿®æ”¹çš„部分如下:
import os
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = SITE_ROOT+'/onlinelist.db'
MEDIA_URL = 'http://onlinelist.jbobos.org/media/'
ADMIN_MEDIA_PREFIX = 'http://onlinelist.jbobos.org/admin_media/'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
)
注æ„, MEDIA_ROOT 是用于ä¿å˜ä¸Šä¼ æ–‡ä»¶çš„ç›®å½•ï¼Œå¦‚æ— å¿…è¦ï¼Œä¿ç•™å…¶ä¸ºç©ºå³å¯ã€‚ Django官方文档ä¸å…³äºŽ MEDIA_ROOT å’Œ MEDIA_URL 的说明很ä¸è¯¦ç»†ï¼Œæˆ‘å‚考的是 Django and Static Files。关于数æ®åº“,看过Fenng写的《SQLiteæ•°æ®åº“是ä¸å°ç«™ç‚¹CMS的最佳选择》åŽï¼Œè§‰å¾—就用sqlite3也挺好的。在设置DatabaseNameçš„æ—¶å€™æˆ‘ç”¨äº†ç›¸å¯¹è·¯å¾„ï¼Œè¿™æ ·ä¸ç”¨åœ¨source里把路径写æ»ã€‚详细请å‚考Django Settings Tip。
《4.åˆå§‹åŒ–adminæ•°æ®åº“》
$> python $PROJECTSHOME/$PROJECTNAME/manage.py syncdb
按照æç¤ºåˆ›å»ºç®¡ç†å‘˜ç”¨æˆ·ã€‚æ•°æ®åº“åŒæ¥å®ŒæˆåŽï¼Œåœ¨æµè§ˆå™¨ä¸è¾“å…¥http://onlinelist.jbobos.org/admin/å°±å¯ä»¥çœ‹åˆ°ç™»å½•ç”»é¢äº†ã€‚
《5.其他问题》
在æµè§ˆå™¨åœ°å€æ 输入一个未定义的地å€ï¼Œä¼šå¼•å‘异常。DEBUG=Trueçš„è¯ï¼Œä¼šçœ‹åˆ°Djangoçš„404页é¢ï¼› DEBUG=Falseçš„è¯ï¼Œä¼šçœ‹åˆ°ä¸€ä¸ªæ›´uglyçš„Traceback,显示「TemplateDoesNotExist : 500.htmlã€ã€‚这个问题ç¨åŽå†è§£å†³ã€‚