[英]Once and for all, static files vs Django 1.3
我一直在努力遵循每一個教程和線程,我不能得到它。
對不起,請把它作為我的三歲給我。
我有什么:我喜歡使用的CSS,為模板設計樣式。
如何到達:MD:project / app / static /
把style.css放在那里
settings.py:
STATIC_ROOT = '/project/app/static/'
STATIC_URL = '/static/'
(當我在模板中嘗試打印{{STATIC_URL}}時,不應該至少給我字符串'/ static /'嗎?)
template:
<LINK REL=StyleSheet HREF="{{ STATIC_URL }}/style.css" TYPE="text/css" MEDIA=screen>
對我來說,下一個合乎邏輯的事情就是創建一個/ static / -url?
我真的迷失在這里..
Django的靜態文件系統大約有兩件事:
將來自多個(特定於應用程序的)目錄的靜態文件組合到一個可以從中提供服務的位置
通過HTTP提供這些文件
如果您有多個位於不同目錄中的靜態文件,則需要#1。 如果要在使用開發服務器時查看這些文件,則需要#2。 在生產中,您通常會跳過#2,因為#1的目的是將文件放在Web服務器可以訪問它們的某個位置。
話雖如此,這是你如何獲得#1:
settings.py:
# This is a filesystem path
STATIC_ROOT = '/path/to/my/project/collected-static-files/'
# This is a URL prefix
STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
...
)
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
...
)
此時,你可以做一些事情:
您將靜態文件放在每個應用程序下的“/ static /”目錄中。 這就是django會尋找它們的地方。 還有一個額外的設置STATIC_DIRS
,如果你的應用程序之外有靜態文件,你可以使用它。
您可以運行manage.py collectstatic
讓Django瀏覽所有應用程序,查找所有靜態文件,並將它們復制到/path/to/my/project/collected-static-files
(這就是為什么該設置是文件系統的原因)路徑。)
您可以在模板中使用{{ STATIC_URL }}
來訪問文件。
在開發模式下,在dev服務器下,Django將自動從STATIC_ROOT
目錄中提供文件。
基本上,Django將為表單的URL添加URL處理程序
/static/some-dir/some-file-name
並從文件系統路徑提供硬盤驅動器中的內容
/path/to/my/project/collected-static-files/some-dir/some-file-name
在生產中,這不會自動發生,因此您必須配置您的Web服務器以執行相同的操作。 (通過Django的完整處理管道運行所有靜態文件並不是一個好主意.Web服務器可以更有效地完成它)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.