首先建議你在本機使用時,請使用 ./manage.py runserver 的方式來執行 django 程式,這樣你所修改的程式可以即時在
http://127.0.0.1:8000/ 中觀看。等你覺得修得差不多的時候,再重啟 apache ,並在
http://127.0.0.1/
中確認,待沒有問題後,再從
http://www.mydomain.name/ 確認,一層一層作檢查會比較能夠發現問題的所在。
關於上傳檔案的設定,應該是這麼作的:
在 settings.py 中設定 MEDIA_ROOT = 'C:/Python25/Lib/site-packages/django/
project/qq'
然後在 qq/models.py 中設定
class SomeClass(models.Model):
----pfield =models.ImageField(upload_to="ppp")
這樣你的上傳檔案會存放在 C:/Python25/Lib/site-packages/django/project/qq/ppp
但你也可以這麼作:
在 settings.py 中設定 MEDIA_ROOT = 'C:/Python25/Lib/site-packages/django/
project'
然後在 qq/models.py 中設定
class SomeClass(models.Model):
----pfield =models.ImageField(upload_to="qq/ppp")
這樣一樣會把上傳檔案放在 C:/Python25/Lib/site-packages/django/project/qq/ppp
但這麼作的好處是,如果你還有個 xx app 的話,你也可以設定在 .../project/xx/hhh 中。
而要瀏覽所上傳的檔案,可分兩個方向,一種是把你的上傳路徑變成 media 的資料夾,一種是透過 views.py 作處理,確定 OK 後,才丟
給使用者。
media:
請觀看我的 blog 文章:
http://hoamon.blogspot.com/2007/05/django.html
views.py:
首先到你的 urls.py 設定下載的 url ,如: (r'^downfile/(?P<file_id>[0-9]+)/$',
'downfile')
然後撰寫 downfile view function
def downfile(R, file_id):
----""" 先判斷檔案存不存在,存在才給使用者瀏覽。
----接下來,去判斷副檔名,不能判斷者以'text'代替,最後讀進整個檔,並直接 output 出去。
----"""
----try:
--------upfile = UploadFile.objects.get(id=file_id)
----except:
--------return HttpResponseRedirect('/fileboard/error_msg/
no_download/')
----filename = upfile.get_file_filename()
----basename = os.path.basename(filename)
----f = open(filename)
----try:
--------ext = os.path.splitext(filename)[1][1:]
----except:
--------ext = 'text'
----
----response = HttpResponse(mimetype='application/%s' % ext)
----response['Content-Disposition'] = 'attachment; filename=
%s'.encode('big5') %
upfile.name
----response.write(f.read())
----return response
第二種方法的好處是,若要下載的檔案不存在,你可以秀警告訊息或是其他你想得到的反應,但缺點是會比 media 設定的方式還要浪費 cpu 。