至少不像其他人那麼容易。它不是建立簡單的基於一個-DIR靜態文件位置的問題..Django StaticFiles APP和Wsgi
https://bitbucket.org/sirex/django-starter/src
有沒有在這裏這麼一個有趣的項目。這一個是使用分配和擴建制作整個項目,並與模塊的Django在一個目錄中。你可以從開發工具遷移到輕鬆的生產模式等等。所有你需要的只是重命名目錄,並在其中鍵入「make」,就是這樣=)那裏有手動...
情況python服務器,並且不使用Apache mod_wsgi: 默認靜態文件位置是:「var/htdocs/static」。這可以被一個靜態目錄位置覆蓋,例如apps/myapp/myapp/static /。這適用於python webserver,但不適用於wsgi/apache。 wsgi無法看到任何分開的默認目錄..例如:http://localhost:8000/static/css/main.css工程,但與Apache相同的網址不起作用。並且這個文件位於myproject/apps/myapp/myapp/static/css/main.css中,雖然默認的靜態目錄是var/htdocs/static =)
據我所知,在設置中使用StaticFiles應用程序進行重寫。 py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'htdocs', 'static')
STATICFILES_DIRS = (
os.path.join(BUILDOUT_DIR, 'project', 'static'), # <-- why "project" and not "apps" I don't know X_X
)
也許這一個是不正確的,我不知道,但與py-server這個作品。 apache虛擬主機與默認位置一起工作..並設置爲「var/htdocs/static」。
也許問題是在wsgi腳本?
#!/usr/local/bin/python2.6
import os,sys
sys.path[0:0] = [
'/usr/local/lib/python2.6/site-packages/',
'/www/webapp/visimes/eggs/PIL-1.1.7-py2.6-freebsd-8.1-RELEASE-amd64.egg',
'/www/webapp/visimes/eggs/South-0.7.3-py2.6.egg',
'/www/webapp/visimes/eggs/django_annoying-0.7.6-py2.6.egg',
'/www/webapp/visimes/eggs/coverage-3.4-py2.6-freebsd-8.1-RELEASE-amd64.egg',
'/www/webapp/visimes/eggs/django_debug_toolbar-0.8.4-py2.6.egg',
'/www/webapp/visimes/eggs/django_extensions-0.6-py2.6.egg',
'/www/webapp/visimes/eggs/django_test_utils-0.3-py2.6.egg',
'/www/webapp/visimes/eggs/ipdb-0.3-py2.6.egg',
'/www/webapp/visimes/eggs/ipython-0.10.1-py2.6.egg',
'/www/webapp/visimes/eggs/djangorecipe-0.21-py2.6.egg',
'/www/webapp/visimes/eggs/zc.recipe.egg-1.3.2-py2.6.egg',
'/www/webapp/visimes/eggs/zc.buildout-1.5.2-py2.6.egg',
'/www/webapp/visimes/eggs/BeautifulSoup-3.2.0-py2.6.egg',
'/www/webapp/visimes/eggs/setuptools-0.6c12dev_r88795-py2.6.egg',
'/www/webapp/visimes/parts/django',
'/www/webapp/visimes',
'/www/webapp/visimes/project', # <-- this one need for monitor.py which i put in there
'/www/webapp/visimes/apps/portal', # <-- startapp.sh script some how forgot to add this dir, it's my default app dir, which must be generated with startapp.sh and added in here..
]
import djangorecipe.wsgi
if __name__ == '__main__':
djangorecipe.manage.main('project.development')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.development'
import monitor
monitor.start(interval=1.0)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我加了最後4行我自己。因爲我無法啓動Apache ..我猜djangorecipe.wsgi應該處理所有其他與staticFile覆蓋..無論如何,請檢查出該軟件包,如果你在Linux或Mac,並嘗試通過你自己。它必須工作
ps。 (btw bin/django需要公佈爲bin/django.wsgi和etc/apache.conf是爲apache生成的vhost)
如果有人試圖用wsgi手動啓動這個「Starter」然後你就會明白一切=)
編輯:關於WSGI如何能理解他需要從Django中設置搜索靜態文件除了默認位置的任何信息,真的是感謝=)
你指出你的apache配置中的別名到/ your/path/to /靜態的/? – 2011-04-07 07:33:06
這個呢? http://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#django-admin-collectstatic這個東西是如何工作的?它可以從多個位置收集靜態文件? – holms 2011-04-07 13:21:42
同樣,Apache(或任何其他網絡服務器)只能向Apache配置中添加別名的服務器提供靜態文件,該配置指向託管靜態文件的位置。是的,您應該使用collectstatic命令將所有靜態文件收集到一個位置(爲了方便或bcs,您不想將許多別名設置到不同的位置)。 staticfiles應用程序主要用於幫助您在本地開發服務器上進行開發,而無需執行像collectstatic或將Alias添加到服務器配置之類的操作。在生產中,唯一的用法是在模板中使用STATIC_URL。 – 2011-04-08 02:49:30