2012-01-17 37 views
1

最近我一直在爲我的網站添加一個負載的功能。爲了讓這個過程更快,我想把我的開發機器上的靜態文件提供給我。具體來說,我想使用DJango v1.3.1附帶的內置開發服務器;修改生產服務器是一個壞主意,每次修改時都必須上傳靜態文件,這浪費了大量的時間和精力。爲什麼STATIC_URL不能以'http://'或'/'作爲DJango開發服務器?

讓開發者發揮球,但一直是一個噩夢!我剛剛浪費了大約4個小時來嘗試提供靜態數據,結果發現我錯誤的是,開發服務器在STATIC_URL開始時似乎不喜歡'/'?我想知道爲什麼和/或我在做什麼錯...

我一直在嘗試使用the settings suggested in the docs,但是我錯誤地閱讀了一些東西,或者還有更多。

我的項目是這樣的:

<project root> 
    /app1 
     ..various files.. 
    /app2 
     ..various files.. 
    /static 
     /style 
      Style.css 
    /templates 
manage.py 
settings.py 
settings_dev.py 
settings_production.py 
urls.py 

settings.py檢測我們正在運行的服務器,然後調用相應settings_dev.pysettings_production.py效果很好,我的所有設置,做工精細的生產服務器上。

settings_dev.py有以下幾點:

DEBUG = True 

ADMINS = (
    ('Jon', '[email protected]'), 
) 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'mydb', 
     'USER': 'dbuser', 
     'PASSWORD': 'dbpassword', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

MEDIA_ROOT = '' 
MEDIA_URL = '/media' 
STATIC_ROOT = 'C:/Users/jon/PycharmProjects/myproject/static' 
STATIC_URL = 'http://192.168.1.4/static' 
STATICFILES_DIRS =() 
ADMIN_MEDIA_PREFIX = 'http://192.168.1.4/static/admin/' 
TEMPLATE_DIRS = ('C:/Users/jon/PycharmProjects/myproject/templates',) 

IS_PRODUCTION_SERVER=False 

..和urls.py包括以下內容:

這工作這麼多我的模板拿起靜態URL,給我(對示例)http://192.168.1.4/static/style/Style.css但是如果我將STATIC_URL更改爲/static

...然後訪問http://192.168.1.4/static/style/Style.css我得到一個404錯誤:

'\style\Style.css' could not be found 

那麼這是怎麼回事?

+0

發現這是你的dev的服務器確實在運行'http:// 192.168.1.4',而不是'http://192.168.1.4:8000'? – 2012-01-17 09:25:20

回答

0

有一些特殊的助手路由的URL靜態文件

from django.conf.urls.static import static 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

if settings.IS_PRODUCTION_SERVER is False: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
    urlpatterns += staticfiles_urlpatterns() 

而且,我從來沒有檢查源代碼,看它是否重要,但在原來的settings.py STATIC_ROOT,STATIC_URL所有的例子,MEDIA_URL和MEDIA_ROOT以/結尾,您可以嘗試一下。

如果你在氣餒,太多的Django的啓動項目,在那裏我忘記設置的東西我做了一個通用的多用途的Django基地項目之後,你可以在https://github.com/riquito/Semiautomatic-django-setup

相關問題