2013-02-18 201 views
0

就像關於Django 1.3的第10億個靜態文件問題一樣。我一直在尋找和嘗試這麼多事情,但似乎沒有任何工作適合我。任何幫助,將不勝感激。將嘗試儘可能多地提供信息。Django 1.3靜態文件

的URL文件

urlpatterns = patterns('', 
url(r'^projectm/statictest/$','project_management.views.statictest'),) 

VIEW

def statictest(request): 
return render_to_response('statictest.html',locals()) 

模板

<html><head><title>Static Load Test Page</title></head> 
<body> 
{% load static %} 
<img src="{{ STATIC_URL }}testimage.jpg" /> 
</body></html> 

設置

STATIC_ROOT = '/home/baz/framework/mysite/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = ('',) 
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 
TEMPLATE_DIRS = (
"/home/baz/framework/mysite/templates" 

文件

-bash-3.2$ pwd 
/home/baz/framework/mysite/templates 
statictest.html 

-bash-3.2$ pwd 
/home/baz/framework/mysite/project_management/static 
-bash-3.2$ ls 
testimage.jpg 

不太確定是否有其他任何有用的信息。但基本上,當我去這個測試頁面,並檢查頁面源,網址指向

<img src="/static/testimage.jpg" /> 

但圖像無法加載。我也嘗試過在多個瀏覽器上使用。也許我在某個地方錯過了一個簡短的陳述?

歡呼的幫助

回答

0

您使用的是內置的runserver命令或你所服務的Django應用程序的一些其他的方式?

如果你使用runserver那麼你的問題是你不告訴Django在哪裏可以在文件系統中找到你的靜態資產。您需要將STATIC_ROOT設置爲您的靜態資產可以找到的文件系統路徑。嘗試將其設置爲:/home/baz/framework/mysite/project_management/static/

如果您使用的是不同的服務器(例如Nginx背後的gunicorn),那麼前端服務器有責任攔截/static/的請求併爲您提供服務。

+0

STATIC_ROOT是其中的runserver查找文件服務(只適用於當DEBUG = TRUE)。這也是Django在collectstatic過程中複製靜態文件的地方。 collectstatic命令默認在每個應用程序的/ static /中查找靜態文件,以及STATICFILES_DIRS中列出的任何目錄中的靜態文件。 – 2013-02-18 02:03:53

+0

是的,我正在使用內置的runserver。 – dlyxzen 2013-02-18 03:25:46

0

還記得在設置'STATIC_ROOT'後運行'collectstatic'管理命令。

https://docs.djangoproject.com/en/1.4/howto/static-files/#deploying-static-files-in-a-nutshell

+0

嗨,好吧,我更新了我的配置文件中的STATIC_ROOT設置。執行python manage.py collectstatic。我可以看到它已經從我的應用程序靜態文件夾收集了testimage,但是當我刷新頁面時,圖像仍然無法加載,路徑僅僅是imgsrc ='testimage.jpg'。 – dlyxzen 2013-02-18 03:24:07

+0

由於您正在使用內置的runserver測試此功能,因此您需要稍微調整一下urls.py,[請參閱此處](https://docs.djangoproject.com/en/1.4/howto/static-文件/#服務,靜態文件正在開發)。現在,一旦完成並且服務器正在運行,請嘗試直接通過訪問「http:// your-url/static/testimage.jpg」來訪問該映像 - 如果工作正常但模板仍在輸出「src ='testimage .jpg'「而不是」src ='/ static/testimage.jpg'「,那麼當模板呈現時你沒有使用RequestContext,[見這裏](http://stackoverflow.com/a/11684482/1428653) 。 – Matt 2013-02-18 05:40:38

+0

我在想這可能與權限有關,所以我嘗試chmodding靜態目錄到777,但無濟於事。 – dlyxzen 2013-02-18 05:40:45