簡體   English   中英

一勞永逸,靜態文件與Django 1.3

[英]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的靜態文件系統大約有兩件事:

  1. 將來自多個(特定於應用程序的)目錄的靜態文件組合到一個可以從中提供服務的位置

  2. 通過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',
    ...
)

此時,你可以做一些事情:

  1. 您將靜態文件放在每個應用程序下的“/ static /”目錄中。 這就是django會尋找它們的地方。 還有一個額外的設置STATIC_DIRS ,如果你的應用程序之外有靜態文件,你可以使用它。

  2. 您可以運行manage.py collectstatic讓Django瀏覽所有應用程序,查找所有靜態文件,並將它們復制到/path/to/my/project/collected-static-files (這就是為什么該設置是文件系統的原因)路徑。)

  3. 您可以在模板中使用{{ STATIC_URL }}來訪問文件。

通過HTTP提供靜態文件

在開發模式下,在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM