2016-12-27 68 views
1

我使用Django的10,我不知道爲什麼在我successfuly收集我的靜態文件,當我嘗試運行部署模式服務器(調試= FALSE)的外面我發生這樣的事情:Django的:在加盟路徑位於基本路徑組件

當我尋找一個靜態文件做:python manage.py findstatic /static/mysite/js/javascript.js

django.core.exceptions.SuspiciousFileOperation: The joined path (/static/mysite/js/javascript.js) is located outside of the base path component (/home/xxxx/.venvs/mysite/local/lib/python2.7/site-packages/django/contrib/admin/static)

我運行這個使用虛擬ENV「mysite的」。

settings.py

STATIC_URL = '/static/' 

STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static') 

MEDIA_ROOT = BASE_DIR + '/mysite/media' 

MEDIA_URL = '/media/' 

urls.py

urlpatterns = [ 
    url(r'', include('mysite.urls')), 
] 

urlpatterns += staticfiles_urlpatterns() 

這是新的對我來說,我也已經做了Django的網站,它永遠不會發生這樣的錯誤。爲什麼不考慮我的STATIC_ROOT路徑?另一方面,collectstatic工作正常。如果我有一個調試RUNSERVER真正的它就像一個魅力。

回答

1

findstatic的位置參數是將傳遞給static呈現在模板中特定的靜態文件中的參數。您所看到的錯誤是因爲你使用絕對路徑,而不是你會傳遞給static函數模板參數。你確定你不是故意這樣的:

python manage.py findstatic mysite/js/javascript.js 

爲一個文件,你會指與

{% static 'mysite/js/javascript.js' %} 

python manage.py findstatic js/javascript.js 

爲一個文件,你會指與

{% static 'js/javascript.js' %} 

供您參考:

usage: manage.py findstatic [-h] [--version] [-v {0,1,2,3}] 
          [--settings SETTINGS] [--pythonpath PYTHONPATH] 
          [--traceback] [--no-color] [--first] 
          staticfile [staticfile ...] 

Finds the absolute paths for the given static file(s). 

positional arguments: staticfile 

注:另,Django的staticfiles應用程序是not supposed to be used in production。在生產中,你應該使用一個網絡服務器來服務基於靜態文件。例如,對於nginx的,你將包括a block like this

location /static { 
    root /path/to/django; 
} 

要調試您的靜態文件檢查STATIC_ROOT目錄運行collectstatic後,並確保您的文件在那裏。如果是,請確保您的Web服務器已配置爲正確提供您的靜態文件目錄。

+0

確定我的錯誤,我真的可以找到我的靜態文件,但我不知道爲什麼不加載任何靜態文件時頁面加載..我有一些難以找到任何錯誤日誌或一些線索爲什麼這發生。 – ePascoal

+0

更多資料加入到你的。 – 2ps

+0

感謝搜索後,我記得只有在運行Web服務器時才能加載靜態文件。 – ePascoal