我查看了無數的答案和試圖找到一個明確的指南或方法來做到這一點的問題,但似乎每個人都有不同的方式。有人可以請向我解釋如何在模板中提供靜態文件?Django靜態設置
假設我剛剛用Django 1.4創建了一個全新的項目,我需要做什麼才能呈現圖像?我應該在哪裏放置媒體和靜態文件夾?
我查看了無數的答案和試圖找到一個明確的指南或方法來做到這一點的問題,但似乎每個人都有不同的方式。有人可以請向我解釋如何在模板中提供靜態文件?Django靜態設置
假設我剛剛用Django 1.4創建了一個全新的項目,我需要做什麼才能呈現圖像?我應該在哪裏放置媒體和靜態文件夾?
<app>/static
或添加到STATICFILES_DIRS
STATIC_ROOT
STATIC_URL
基礎網址的web服務器提供./manage.py collectstatic
RequestContext
在渲染調用和{{ STATIC_URL }}
到前綴路徑多一點點關於運行在Django的前一個Web服務器。 Django實際上是一個應用程序服務器。它的設計目的並不在於提供靜態文件。這就是爲什麼當DEBUG=False
積極拒絕這樣做。另外,Django開發服務器不應該用於生產。這意味着在任何時候都應該在Django前面有一些東西。它可能是一個WSGI服務器,例如gunicorn或一個'真實'的網絡服務器,如nginx或Apache。
如果您運行的是反向代理(例如nginx或Apache),則可以將/static
綁定到文件系統中的路徑以及其他流量傳遞給Django。這意味着您的STATIC_URL
可以是相對路徑。否則,您將需要使用絕對URL。
創建的項目應該有一個靜態文件夾。將所有資源(圖像,...)放在那裏。 然後,在你的HTML模板,你可以參考STATIC_ROOT並添加資源路徑(相對於靜態的文件夾)
下面是官方文檔:
如何管理靜態文件:https://docs.djangoproject.com/en/1.4/howto/static-files/
靜在一般的文件:https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/
如果您打算在生產型環境中部署,那麼你應該在這裏閱讀部分:https://docs.djangoproject.com/en/1.4/howto/static-files/#staticfiles-production
一般來說,你把我們的靜態和媒體文件夾中的Django項目應用程序之外
出於好奇,爲什麼把靜態文件放在應用程序之外? – 2013-03-08 00:35:00
呈現HTML和與數據庫交談是一個完全獨立的服務文件集問題。 Django本身並不試圖成爲一個完美的Web服務器,恰恰相反:它是一個WSGI應用程序,需要一種或另一種類型的前端。 './manage.py runserver'僅用於開發。 – ferrix 2013-03-08 14:59:45
在URLconf把這個一個:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
admin.autodiscover()
urlpatterns = patterns('',
.............
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
模板:
{% load static %}
<img src="{% static 'images.png' %}">
<img src="{{MEDIA_URL}}images.png">
沒有用,但我覺得你的痛苦。我覺得它應該很簡單,但是我不瞭解的基本理解之間肯定存在根本的差距。我不清楚媒體和靜態之間的區別是什麼,除了用戶上傳之外的其他內容。 – user798719 2013-03-16 18:28:03
@ user798719其實我想清楚了,一旦你第一次把它弄明白就很簡單。 STATIC_ROOT是所有的靜態文件獲取收集在目錄中。 STATIC_URL是url靜態文件將可在(例如) MEDIA_ROOT是路徑目錄下的所有用戶上傳文件會 – 2013-03-17 02:16:00
@ user798719 STATIC_ROOT是您收集的所有靜態文件的目錄。 STATIC_URL是靜態文件將可用的URL(例如) MEDIA_ROOT是所有用戶上載文件將轉到的目錄的路徑 MEDIA_URL與STATIC_URL,只是對uri的引用,這些文件將在 上可用STATICFILES_DIRS是一個元組,路徑爲所有文件的存儲位置d之前收集部署然而,你不能STATICFILES_DIR STATIC_ROOT或它會拋出一個錯誤! – 2013-03-17 02:21:50