2013-11-28 50 views
2

我在Django 1.5.4上的開發服務器中遇到靜態文件問題。我不確定在實際的生產服務器(運行Apache)上是否出現同樣的問題,因爲我發現了一個解決方案(現在只需對整個URL進行硬編碼 - 我知道它很糟糕,但它可以得到這份工作完成)。在Django視圖中找不到靜態文件

我正在使用Reportlab爲我的項目創建一個PDF文件,並且需要在其中包含一張圖片。我也跟着在不同post答案:

from django.templatetags.static import static 
url = static('x.jpg') 

不幸的是,我從服務器得到的答覆是一個IO錯誤:「無法打開資源‘本地主機:8000 /靜態/圖片/ x.jpg’」,甚至儘管將其複製並粘貼到URL欄清楚地顯示出該圖片恰好在那裏。

我關於靜態文件設置如下,和他們做一切(CSS,Javascript代碼等)工作:

ROOT_PROJECT = os.path.join(os.path.split(__file__)[0], "..") 
STATIC_ROOT = os.path.join(ROOT_PROJECT, 'static') 
STATICFILES_DIRS =() 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

感謝您的幫助!

回答

1

確保django.contrib.staticfiles包含在您的INSTALLED_APPS中。

通常有幾種方法來存儲靜態文件。

  1. 一種方法是在應用程序文件夾內創建一個靜態文件夾並將文件存儲在那裏。你可以檢查,here
  2. 是創建一個文件夾,並存儲你的靜態文件不適用於任何特定的應用程序。

django documentation

Your project will probably also have static assets that aren’t tied to a particular app. In addition to using a static/ directory inside your apps, you can define a list of directories (STATICFILES_DIRS) in your settings file where Django will also look for static files.

例如:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
    '/var/www/static/', 
) 

如果你到生產再檢查production deployment瞭解更多詳情!

+0

正如我所說 - 它與所有其他靜態文件(CSS,Javascript等)一起工作得很好。它們都在主應用程序的靜態文件夾(在子文件夾js/css中)中,沒有任何問題。除非我指定確切的地址,否則只有這張圖片纔會加載。還有其他的東西一定是錯的。 – Tobi