2013-10-29 33 views
0

我無法加載.css和.js文件。這就是我在服務器上得到的輸出:STATIC_URL不能在Django 1.5上工作

[29/Oct/2013 11:33:26]「GET /static/srt/css/django-admin-widgets.css HTTP/1.1」404 1700

[29月/ 10月/ 2013 11時33分26秒] 「GET /static/srt/js/django-admin.multiselect.js HTTP/1.1」 404 1706

settings.py:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media') 
MEDIA_URL = '/media/' 
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'staticfiles'), 
) 

urls.py:

urlpatterns = patterns('', 
# Examples: 
# url(r'^$', 'srt_project.views.home', name='home'), 
# url(r'^srt_project/', include('srt_project.foo.urls')), 

# Uncomment the admin/doc line below to enable admin documentation: 
url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
url(r'^accounts/', include('registration.backends.default.urls')), 
# Uncomment the next line to enable the admin: 
url(r'^admin/', include(admin.site.urls)), 
# url(r'^accounts/', include('registration.urls')), 

url(r'^srt/', include('srt.urls', app_name='srt')), 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

urlpatterns += staticfiles_urlpatterns() 

site_base.html

{% load static from staticfiles%} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Status Reporting Tool</title> 
    <link rel="stylesheet" type="text/css" href="{% static 'srt/css/django-admin-widgets.css' %}" /> 
    <script type="text/javascript" src="{% static 'srt/js/django-admin.multiselect.js' %}"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
    <script> 
     jQuery.each($("select[multiple]"), function() { 
     // "Locations" can be any label you want 
     SelectFilter.init(this.id, "Viewers", 0, "/static/srt/"); 
     }); 
    </script> 

目錄結構:

.---srt_project 
| manage.py 
|     
+---srt 
| | admin.py 
| | forms.py 
| | models.py 
| | tables.py 
| | tests.py 
| | urls.py 
| | views.py 
| | __init__.py 
|    
\---srt_project 
    | settings.py 
    | srt_project.sqlite 
    | urls.py 
    | wsgi.py 
    | __init__.py 
    | 
    \---static 
     \---srt 
      +---css 
      |  django-admin-widgets.css 
      |  
      \---js 
        django-admin.multiselect.js 
+0

您的網絡服務器應該處理靜態文件。你可以在你的htacess或服務器conf中放置一個別名來提供你的靜態文件。 – Jingo

+1

@Jingo我不認爲這是問題。我在DEBUG = True的開發服務器上運行它。從文檔: 「除了這些配置步驟,您還需要真正服務於靜態文件 在開發過程中,這將是自動,如果你使用的runserver和DEBUG設置爲True(見django.contrib中完成的。 staticfiles.views.serve())。 這種方法效率非常低,可能不安全,所以它不適合生產。「 – Hec

+0

這是我的觀點,如果您使用runserver命令(這正是我正在做的),開發服務器會自動爲您提供文件。所以我不確定你在暗示什麼,你能否詳細說明一下? – Hec

回答

1

好的我在.js和.css文件中得到了一個304,所以看起來像我已經修復了它。我只需在我的內部srt_project目錄中將我的文件夾名稱從'static'更改爲'staticfiles'。雖然它不使任何意義,我爲這怎麼可能,如果「靜態」現在是「staticfiles」:

[29/Oct/2013 12:50:48] "GET /static/srt/css/django-admin-widgets.css HTTP/1.1" 304 0 
[29/Oct/2013 12:50:48] "GET /static/srt/js/django-admin.multiselect.js HTTP/1.1" 304 0 

可能有人請解釋一下嗎?

+1

因爲你運行了'collectstatic',它確實如此:將所有東西都複製到靜態文件中。不過,你說得對,你應該不需要開發。 –

2

這裏是事情的清單來檢查:

  • 你包括INSTALLED_APPSdjango.contrib.staticfiles
  • 是否包含在INSTALLED_APPSsrt
  • DEBUG = TrueFalse?如果是False那麼staticfiles_urlpatterns將不起作用。
  • (部署)你運行python manage.py collectstatic
+0

謝謝西蒙。包含在INSTALLED_APPS中的django.contrib.staticfiles和srt。 DEBUG = True。尚未部署,在本地主機上作爲開發運行。必須在內部srt_project文件夾中創建一個空文件夾staticfiles以運行collectstatic。不知道做了什麼,雖然複製了一堆文件..我不認爲這會在開發過程中有所作爲,但不確定。 – Hec