2013-10-15 76 views
1

我有多個靜態文件目錄。每個應用程序都有自己的靜態文件目錄,以使其成爲模塊化。我如何訪問所有應用程序的靜態文件目錄。最初我將所有的靜態文件放在一個文件夾下。現在我將靜態文件保存在應用程序中,然後想要從應用程序內部訪問它。如何更改我的settings.py文件以訪問靜態目錄。在Django中鏈接靜態文件目錄

這裏是我的目錄結構。

|-- assets      // static folder named as 'assets' 
| |-- css 
| | |-- bootstrap.css 
| | |-- bootstrap.min.css 
| | |-- bootstrap-responsive.css 
| | |-- bootstrap-responsive.min.css 
| | `-- login.css 
| |-- img 
| | |-- glyphicons-halflings.png 
| | `-- glyphicons-halflings-white.png 
| `-- js 
|  |-- bootstrap.js 
|  |-- bootstrap.min.js 
|  `-- jquery-1.9.1.min.js 

|-- initial     // My Project Name 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- settings.py 
| |-- settings.pyc 
| |-- urls.py 
| |-- urls.pyc 
| |-- wsgi.py 
| `-- wsgi.pyc 
|-- manage.py 
|-- models.py 
|-- modules     //apps folder named as 'modules' 
| |-- dashboard 
| | |-- __init__.py 
| | |-- __init__.pyc 
| | |-- models.py 
| | |-- models.pyc 
| | |-- static   // static folder inside the dashboard app. 
| | | |-- css 
| | | |-- img 
| | | `-- js 
| | |  `-- dashboard.js 
| | |-- templates   // template folder inside the dashboard app. 
| | | `-- dashboard 
| | |  `-- dashboard.html 
| | |-- tests.py 
| | |-- urls.py 
| | |-- urls.pyc 
| | |-- views.py 
| | `-- views.pyc 
| |-- login   // login app 
| | |-- forms.py 
| | |-- forms.pyc 
| | |-- __init__.py 
| | |-- __init__.pyc 
| | |-- models.py 
| | |-- models.pyc 
| | |-- static 
| | | |-- css 
| | | | `-- login.css 
| | | |-- img 
| | | `-- js 
| | |-- templates 
| | | |-- auth 
| | | | |-- login.html 
| | | | |-- logout.html 
| | | | `-- register.html 
| | | `-- registration 
| | |  `-- login.html 
| | |-- tests.py 
| | |-- urls.py 
| | |-- urls.pyc 
| | |-- views.py 
| | `-- views.pyc 
| 
`-- templates    // templates folder for base templates. 
    |-- base1.html 
    |-- base2.html 
    `-- registration 
     `-- login.html 

這裏是我的settings.py文件,當所有的靜態文件是一個文件夾下。

MEDIA_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '../assets/')) 

MEDIA_URL = '' 

STATIC_ROOT = '' 

STATIC_URL = '/assets/' 

這裏是我的settings.py文件,當所有的靜態文件是根據各自的模塊/應用程序。

MEDIA_ROOT = (
    os.path.normpath(os.path.join(os.path.dirname(__file__), '../assets/')), 
    os.path.normpath(os.path.join(os.path.dirname(__file__), '../modules/dashboard/static/')), 
    os.path.normpath(os.path.join(os.path.dirname(__file__), '../modules/login/static/')), 
    ) 

MEDIA_URL = '' 

STATIC_ROOT = '' 

STATIC_URL = '/assets/' 
+0

使用Static Files應用程序將幫助你在這裏。 https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#module-django.contrib.staticfiles - 應該幫助你。 –

+0

MEDIA用於用戶上傳,STATIC用於靜態文件..(由生產網站中的collectstatic命令收集,因此您的服務器可以爲它們提供服務)如果您想爲其命名資產,那很好,但會導致一些額外的配置約定是'靜態')以供進一步參考:http://stackoverflow.com/questions/11216829/django-directory-structure –

回答

3

您應該遵循以下步驟(從文件):https://docs.djangoproject.com/en/dev/howto/static-files/

最重要的部分是:

存儲靜態文件中調用的應用程序靜態文件夾中。例如my_app/static/my_app/myimage.jpg。

所以從資產將名稱更改爲靜態

+0

爲什麼我應該將它改爲'static'?它有一些相關性嗎? – PythonEnthusiast

+0

@ user1162512因爲'django.contrib.staticfiles'是如何工作的。它將搜索子文件夾「/ static」中每個應用程序的靜態文件。它會省略其他文件夾。 – freakish

+0

更具體地說就是'django.contrib.staticfiles.finders.AppDirectoriesFinder'的工作方式。如果你想做一些自定義的事情,你可以在設置中創建你自己的'STATICFILES_FINDER'。這兩個默認的查找器將在每個已安裝的應用程序中搜索顯式位置('STATICFILES_DIRS'),或者在'/ static /'下。另外請記住,在/靜態之後,url路徑將是'STATIC_URL' +文件路徑。 –

相關問題