2009-12-15 37 views
2

我已經從一臺服務器遷移到另一個我的Django應用程序,並在其後發現有媒體奇怪的錯誤:Django的:問題與服務具有非ASCII名稱的靜態文件

Traceback (most recent call last): 

File "/usr/lib/python2.5/site- 
packages/Django-1.1.1-py2.5.egg/django/core/handlers/base.py", line 92, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 

File "/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/views/static.py", line 51, in serve 
    if os.path.isdir(fullpath): 

File "/usr/lib/python2.5/posixpath.py", line 195, in isdir 
    st = os.stat(path) 

UnicodeEncodeError: 'ascii' codec can't encode characters in position 44-46: ordinal not in range(128) 

圖像我試圖訪問實際上有在名稱中西里爾符號,但它並沒有對以前的環境

感謝, 奧列格

+0

服務器之間的區別是什麼:操作系統,蟒蛇版本...? – luc 2009-12-15 23:19:31

回答

1

首先的問題,沒有Django的滿足您的靜態文件。看到這個:http://docs.djangoproject.com/en/dev/howto/static-files/

+3

讓我們堅持解決問題 – ashchristopher 2009-12-15 22:03:07

+0

@ashchristopher :問題很可能是使用Django來做一些不適合的事情,讓Web服務器爲靜態文件服務,並且問題可能會消失。 – 2009-12-15 22:27:00

+0

它合理地希望在測試服務器環境中工作。特別是使它por表。雖然這是一個很好的方法,但「只要繼續下去」解決方案 – michael 2009-12-16 03:01:45

0

在Django文檔中寫道,這可能會連接到Apache設置(通過here發現)。

https://docs.djangoproject.com/en/1.4/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror

「確保用於啓動Apache環境配置爲接受非ASCII文件名。如果您的環境配置不正確,你將像調用函數os.path中時觸發UnicodeEncodeError異常() 。在包含非ASCII字符的文件名

爲了避免這些問題,用來啓動Apache應該包含設置環境類似於以下內容:

export LANG='en_US.UTF-8' 
export LC_ALL='en_US.UTF-8' 

請參閱操作系統的文檔以獲取適當的語法和位置以放置這些配置項目;/etc/apache2/envvars是Unix平臺上的常見位置。 「

PS我當前的託管技術支持非常慢,我也沒有訪問Apache設置,這就是爲什麼我目前不得不求助於django static serve。我的網站是不是經常訪問,我沒有其他選擇,即使我知道它不是最佳的。

相關問題