擴展Shamanu4的評論:你要求的是如何提供靜態文件。出於開發目的,您可以使用static file server。
長期來看,這不是一個最佳解決方案。簡單的方法是隔離所有的靜態文件,並通過不同的路徑直接通過Web瀏覽器提供。在Apache中,如果先配置靜態路徑,則此靜態文件路徑可位於Django路徑中。但是,如果您需要高性能,Django團隊建議您使用輕量級,速度優化的服務器(例如lighttpd)來爲靜態文件和其他服務器提供WSGI支持(例如Apache)來爲Django提供服務。
在Django項目中,我有工作,我有Django服務從/djangoprojname/
和從/djangoprojname/static/
服務的靜態文件。在磁盤上,static
目錄與我的Django項目目錄處於同一級別。這兩者都位於Mercurial存儲庫中。在static/
之內,我有css/
,js/
和img/
,並且在這些目錄中,每個應用程序都有一個目錄,名稱與應用程序相同。這樣可以避免麻煩。
我django.conf
(在/etc/httpd/conf.d
在Fedora或RHEL)看起來像:
WSGIDaemonProcess djangoprojname threads=15
WSGISocketPrefix /var/run/wsgi/wsgi
Alias /djangoprojname/static/ /var/www/djangoprojname/static/
Alias /djangoprojname/admin/media/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/
WSGIScriptAlias /djangoprojname /var/www/djangoprojname/django.wsgi
WSGIProcessGroup djangoprojname
<Directory /var/www/djangoprojname>
Order deny,allow
Allow from all
</Directory>
<Directory /usr/lib/python2.6/site-packages/django/contrib/admin/media>
Order deny,allow
Allow from all
</Directory>
的發展空間,我說這是我的項目的urls.py
結束:
# Only serve static media if in development (runserver) mode.
if settings.IS_DEV:
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT,
'show_indexes': True}),
)
settings.IS_DEV
在設置如果它在開發服務器上運行,我的settings.py
到True
。 manage.py
被修改爲設置一個環境變量,如果runserver
被使用,並且settings.py
檢查這個變量。 MEDIA_ROOT
被設置爲static
目錄的路徑。
在settings.py文件中檢查STATIC_ROOT STATIC_URL。 另外這可能有助於http://docs.djangoproject.com/en/dev/howto/static-files/ – Shamanu4 2011-05-23 14:09:31
嗯,你確定這真的很糟糕嗎?引用你的鏈接:「對於小型項目來說,這不是什麼大問題,因爲你可以將靜態文件保存在Web服務器可以找到的地方,但是在更大的項目中 - 尤其是那些由多個應用程序組成的項目 - 處理每個應用程序提供的多組靜態文件開始變得棘手。「他們的意思是「你的seb服務器可以找到它的地方」?感覺就像我剛剛在某個地方犯了一個愚蠢的錯誤......雖然我嘗試過,但我反正無法正常工作。 :/ – qwerty 2011-05-23 14:22:35
-1。首先,你還沒有說過這個項目是如何被服務的 - 這是通過runserver,Apache還是其他的?其次,這與模板無關,它與靜態資產有關。第三,你似乎沒有對Google這個完全相同的話題提出許多許多其他問題。 – 2011-05-23 14:31:45